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;

}

}