关于字符串的运用(去除空格,反转,统计次数,最长公共子串)
来源:互联网 发布:淘宝如何设置限购 编辑:程序博客网 时间:2024/06/04 01:21
整理昨天的笔记,做了几个字符串的问题,感觉还不错,
package com.an.test.teststring;import org.junit.Test;public class TestString {//1、模拟一个trim方法,去除字符串两端的空格。@Testpublic void test() {//方法一//String str1 = " 我爱Java ";//char[] str2 = str1.toCharArray();//int start = 0;//int end = str2.length-1;//for(int i=0;i<str2.length;i++){//if(str2[i] == ' '){//start++;//}else{//break;//}//}////for(int i=end;i>=0;i--){//if(str2[i] == ' '){//end--;//}else{//break;//}//}//String str3 = str1.substring(start,end+1);//System.out.println(str3);//方法二:String str4 = " 我爱Java ";while(str4.startsWith(" ")){str4 = str4.replaceFirst(" ", "");}System.out.println("[" + str4 + "]");while(str4.endsWith(" ")){str4 = str4.substring(0, str4.length()-1);}System.out.println("[" + str4 + "]");}//将一个字符串进行反转。将字符串中指定部分进行反转。//比如将“abcdefgho”反转为”abfedcgho” @Testpublic void test1(){ String reverse = reverse("abcdefgho",2,6); System.out.println(reverse);} public String reverse(String res,int start,int end){ //把这个字符串分为3段,左边 中间的 右边的。对其中间的进行逆转 String left = res.substring(0, start); String right = res.substring(end); String middle = res.substring(start, end); char[] char1 = middle.toCharArray(); for(int i=0,j=char1.length-1;i<char1.length/2;i++,j--){ char temp = char1[i]; char1[i] = char1[j]; char1[j] = temp; } String str = ""; for(int i=0;i<char1.length;i++){ str = str + char1[i]; } System.out.println(str); res = left + str + right;return res; } //3、获取一个字符串在另一个字符串中出现的次数。 //比如:获取"ab"在 “abababkkcadkabkebfkabkskab”中出现的次数 @Test public void test2(){ String str1 = "abababkkcadkabkebfkabkskab"; String str2 = "ab"; int count = count(str1,str2); System.out.println(count); } public int count(String res,String find){ int count = 0; while(res.contains(find)){ count++; int index = res.indexOf(find); res = res.substring(index+find.length()); }return count; } //很想最长公共子串(LCS),但是LCS很难理解的.小菜不懂LCS算法 //获取两个字符串中最大相同子串。比如: //str1 = "abcwerthelloyuiodefm“;str2 = "cvhellobnm" //提示:将短的那个串进行长度依次递减的子串与较长的串比较。 @Test public void test4(){ String maxSub = getMaxSub("abcwerthelloyuiodefm", "cvhellobnm"); long end = System.currentTimeMillis();System.out.println(maxSub); } public static String getMaxSub(String str1 ,String str2){//1、找出str1和str2谁长谁短, String max = str1.length() > str2.length() ? str1 : str2;String min = str1.length() < str2.length() ? str1 : str2;/*此题思想:外循坏,就是从短的字符串的第一个位置开始,记为左边. *内循环,就是要截取多少次.截取时,就是从left位置开始截取,外循环一次,left往前动一位. *内循环就是要从left位置开始截取,截取到倒数第一个、第二个、.....第left个 * * * */String result = "";int count = 0;for(int left = 0; left <min.length(); left++){//left = 0,9for(int right = 0; right < min.length()-left; right++){//left = 0, right = 0,1,..9 第一轮,内循环循环10//left = 1, right =0 ,8 第二轮,内循环执行//...String str = min.substring(left,min.length()-right);if(max.contains(str)){//System.out.println("str:"+str);//System.out.println("result:"+result);if(str.length() >= result.length()){//System.out.println("str111:"+str);result = str;count++;}}}}System.out.println(count);return result;} }
阅读全文
0 0
- 关于字符串的运用(去除空格,反转,统计次数,最长公共子串)
- 求多个字符串的最长公共子串
- 两个字符串的最长公共子串
- 两个字符串的最长公共子串
- 两个字符串的最长公共子串
- 两个字符串的最长公共子串
- 两个字符串的最长公共子串
- (美团网)两个字符串的最长公共子串
- sdut 1008 最大公共子串(求n个字符串的最长公共子串)
- 最长公共子串,字符串
- 求str最长回文子序列是求这个原字符串和它反转字符串的最长公共子序列。
- 最长公共子串序列一之 两个字符串的最长公共子串
- 求两个字符串的最长公共子串,最长公共子序列,编辑距离
- 最长公共子串序列一之两个字符串的最长公共子序列
- 字符串操作:两个字符串的最长连续公共子串
- 关于公共子串的分析,求两个字符串中所有公共子串个数,以及最长公共子串和长度。
- 最长公共子序列运用
- 最长公共子字符串
- 开始写博客之旅
- Oracle入门基础
- HDU-1166-敌兵布阵
- IO复用——poll机制内核源代码剖析
- SQL 单表查询的一些常用语句和函数及单表的插入修改删除操作
- 关于字符串的运用(去除空格,反转,统计次数,最长公共子串)
- 1.1.5字典
- [leetcode]552. Student Attendance Record II
- Xlistview(异步、Imagerloader、POST)
- Java成员变量初始化顺序
- CodeForces
- jsp web上传文件
- java中线程同步的理解
- javaScript关系运算符总结