获取一个字符串在另一个字符串中出现的次数。比如:获取“ab”在“abkkcadkabkebfkabkskab”中出现的次数。
public class StringDemo1 {
/*
获取一个字符串在另一个字符串中出现的次数。
比如:获取“ab”在“abkkcadkabkebfkabkskab”中出现的次数。
获取subStr在mainStr中出现的次数
*/
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());
// }
//方式二:对方式一的改进
while((index=mainStr.indexOf(subStr,0))!=-1){
count++;
index+=subLength;
}
return count;
}else{
return 0;
}
}
//如果存在多个长度相同的最大相同子串
//此时先返回String[],后面可以用集合中的ArrayList替换,较方便
public String[] getMaxxSameSubString1(String str1,String str2){
if(str1!=null&&str2!=null){
StringBuffer sBuffer=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)){
sBuffer.append(subString+",");
}
}
if(sBuffer.length()!=0){
break;
}
}
String[] split=sBuffer.toString().replaceAll(",$","").split("\\,");
return split;
}
return null;
}
public void testGetMaxSameString(){
String str1="abcwerthelloyuiodefabcdef";
String str2="cvhellobnm";
//String maxSameString=getMaxSameString(str1,str2);
String[] maxSameString=getMaxxSameSubString1(str1,str2);
System.out.println(maxSameString);
}
}