JavaSE进阶
10.9 练习
- 模拟一个trim方法,去除字符串两端的空格。
- 将一个字符串进行反转。将字符串中指定部分进行反转。比如将“abcdefgho”反转为”abfedcgho”
- 获取一个字符串在另一个字符串中出现的次数。
比如:获取"ab"在 “abababkkcadkabkebfkabkskab”中出现的次数
4、获取两个字符串中最大相同子串。比如:
str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm"
提示:将短的那个串进行长度依次递减的子串与较长的串比较。
public class TestString5 { public static void main(String[] args) { String str =" he llo "; System.out.println(myTrim(str)); System.out.println(myTrim2(str)); System.out.println(myTrim3(str)); } public static String myTrim3(String str){ //利用正则表达式 //^表示开头 \s表示 空白符 *表示0次或多次 |表示或者 $表示结尾 return str.replaceAll("(^\\s*)|(\\s*$)", ""); } public static String myTrim2(String str){ while(str.startsWith(" ")){ str = str.replaceFirst(" ", ""); } while(str.endsWith(" ")){ str = str.substring(0, str.length()-1); } return str; } public static String myTrim(String str){ char[] array = str.toCharArray(); int start =0; for(int i=0;i<array.length;i++){ if(array[i] == ' '){ start++; }else{ break; } } int end = array.length-1; for(int i=end;i>=0;i--){ if(array[i] == ' '){ end--; }else{ break; } } String result = str.substring(start,end+1); return result; } } |
public class TestString6 { public static void main(String[] args) { String str ="abcdefgho"; System.out.println(str); System.out.println(reverse(str,2,5)); } //从第start个字符,到第end个字符 public static String reverse(String str,int start,int end){ char[] array = str.toCharArray(); for(int i = start,j=end;i< j;i++,j--){ char temp =array[i]; array[i]=array[j]; array[j]=temp; } String s = new String(array); return s; } } |
public class TestString7 { public static void main(String[] args) { String str1="ab"; String str2="abababkkcadkabkebfkabkskab"; System.out.println(count(str1,str2)); } public static int count(String str1,String str2){ int count =0; do{ int index = str2.indexOf(str1); if(index !=-1){ count++; str2 = str2.substring(index + str1.length()); }else{ break; } }while(true); return count; } } |
public class TestString8 { public static void main(String[] args) { String str=findMaxSubString("abcwerthelloyuiodef","cvhellobnm"); System.out.println(str); } //提示:将短的那个串进行长度依次递减的子串与较长的串比较。 public static String findMaxSubString(String str1,String str2){ String result=""; String mixStr = str1.length()<str2.length()?str1:str2; String maxStr = str1.length()>str2.length()?str1:str2; //外循环控制从左到右的下标,内循环控制从右到左的下标 for(int i=0;i<mixStr.length();i++){ for(int j=mixStr.length();j>=i;j--){ String str=mixStr.substring(i, j); if(maxStr.contains(str)){ //找出最大相同子串 if(result.length()<str.length()){ result = str; } } } } return result; } } |