//1.模拟一个Trim方法,去除字符串两端空格 public static String myTrim(String str){ if(str!=null){ int start=0; int end=str.length()-1; while(start<end&&str.charAt(start)==' '){ start++; } while(start<end&&str.charAt(end)==' '){ end--; } if(str.charAt(start)==' '){ return ""; } return str.substring(start,end+1); } return null; } //2-1.将一个字符串指定的部分进行反转 // public static String reverse(String str,int startIndex,int endIndex){ // if(str!=null){ // char[] chars = str.toCharArray(); // for (int i=startIndex,j=endIndex; i<j; i++,j--) { // char tepm=chars[i]; // chars[i]=chars[j]; // chars[j]=tepm; // } // // return new String(chars); // } // // return null; // } //2-2.将一个字符串指定的部分进行反转 public static String reverse(String str,int startIndex,int endIndex){ if(str!=null){ StringBuilder s=new StringBuilder(str.length()); s.append(str.substring(0,startIndex)); for (int i = endIndex; i>=startIndex; i--) { s.append(str.charAt(i)); } s.append(str.substring(endIndex+1)); return s.toString(); } return null; } //3.获取一个字符串在另一个字符串中出现的次数 public static int getCount(String mainStr,String subStr){ if(mainStr.length()>=subStr.length()){ int count=0; int index=0; while((index=mainStr.indexOf(subStr,index))!=-1){ index+=subStr.length(); count++; } return count; }else { return 0; } } //4-1.获取两个字符串中最大相同字串。如:str1="abcwellhellozsy"; str2="zxshellozzsq"; "hello" public static String getMaxSameSubString(String str1,String str2){ if(str1!=null&&str2!=null){ String maxStr=(str1.length()>str2.length())?str1:str2; String minStr=(str1.length()>str2.length())?str2:str1; int len=minStr.length(); for(int i=0;i<len;i++){ for (int x=0,y=len-i;y<=len;x++,y++){ if(maxStr.contains(minStr.substring(x,y))){ return minStr.substring(x,y); } } } } return null; } //4-2.如果存在多个长度相同的最大相同子串,用集合 public static List<String> getMaxSameSubString2(String str1,String str2){ if(str1!=null&&str2!=null){ List<String> list=new ArrayList<>(); String maxStr=(str1.length()>str2.length())?str1:str2; String minStr=(str1.length()>str2.length())?str2:str1; int len=minStr.length(); for (int i = 0; i < len; i++) { for (int x=0,y=len-i;y<=len;x++,y++){ String subString=minStr.substring(x,y); if(maxStr.contains(subString)){ list.add(subString); } } if(list.size()!=0){ break; } } return list; } return null; }
String算法题
于 2022-07-03 11:58:18 首次发布