1 将一个字符串反转,将字符串中指定部分进行反转,比如,"abcdefg", 反转为"abfedcg" 方式一
public class StringDemo { // 方式一 转为 char[] public String reverse(String str,int startIndex,int endIndex){ if(str !=null && str.length() !=0){ char[] arr = str.toCharArray(); for(int x = startIndex,y = endIndex;x<y;x++,y--){ char temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } return new String(arr); } return null; }
// 第二种方式
// 方式二 public String revers1(String str ,int startIndex,int endIndex){ if(str !=null){ // 第一部分 String reverseStr = str.substring(0,endIndex); // 第二部分 for(int i = endIndex;i>=startIndex;i--){ reverseStr +=str.charAt(i); } //第三部分 reverseStr +=str.substring(endIndex+1); return reverseStr; } return null; }
// 方式三
// 方式三 使用 StringBuffer / StringBuilder 替换String public String reverse2(String str,int startIndex,int endIndex){ if(str !=null){ StringBuilder builder = new StringBuilder(str.length()); // 第一部分 builder.append(str.substring(0,startIndex)); //第二部分 for(int i = endIndex;i>=startIndex;i--){ builder.append(str.charAt(i)); } //第三部分 builder.append(str.substring(endIndex+1)); return builder.toString(); } return null; }
2 获取一个字符串在另一个字符串中出现的次数
/** * 获取一个字符串在另一个字符串中出现的次数 * */ public int getCount(String mainStr,String subStr){ int mainLength = mainStr.length(); int subLength = subStr.length(); int count = 0; int index ; if(mainLength>=subLength){ if((index=mainStr.indexOf(subStr))!=-1){ count++; mainStr = mainStr.substring(index+subStr.length()); } return count; }else{ return 0; } }
3 获取两字符串中最大的相同的字串
//获取两个字符串中,最大相同字串 public String getMaxSameString(String str1 ,String str2){ if(str1 !=null && str2 !=null){ String maxStr = (str1.length()>=str2.length())?str1:str2; String minStr = (str1.length()< str2.length())?str1:str2; int length = minStr.length(); for(int i = 0;i<length;i++){ for(int x = 0,y=length-i;y<=length;x++,y++){ String subStr = minStr.substring(x,y); if(maxStr.contains(subStr)){ return subStr; } } } } return null; }
// 如果你存在多个长度相同的最大相同字串
// 如果你存在多个长度相同的最大相同字串 // 此时先返回String[] 后面可以用集合中的ArrayList 替换,较方便。 public String[] getMaxSameString12(String str1,String str2){ if(str1 !=null && str2 !=null){ StringBuffer stringBuffer = new StringBuffer(); String maxString = (str1.length()>str2.length())? str1:str2; String minString = (str1.length()>str2.length())?str2:str1; int len = minString.length(); for(int i= 0;i<len;i++){ for(int x = 0,y = len-i;y<=len;x++,y++){ String subString = minString.substring(x,y); if(maxString.contains(subString)){ stringBuffer.append(subString+","); } } if(stringBuffer.length() !=0){ break; } } } return null; }