您的位置:首页 > 编程语言 > Java开发

java实现获取字符串strSub在父字符串strFather中出现的次数

2016-03-01 16:49 393 查看

java实现获取字符串strSub在父字符串strFather中出现的次数

java实现获取字符串strSub在父字符串strFather中出现的次数,如strFather="abeefddfadeeabfkkeeabeeabeerfab",strSub="ab",则子字符串strSub在strFather出现的次数为5.

  我的思路是这样的:设定一个跑标i,遍历到strFather.length()-strSub.length(),每一次的遍历,进行strFather字符串的截取,其中截取的位置为 i -> i+strSub.length()的位置,截取到的字符串strTemp跟strSub进行比较,若相等,则跑标i往后移动 strSub.length() 的位置,并让次数num 加1 。否则i 往后移动一个位置

代码如下:
/**
* 获取字符串strSub在 父字符串strFather中出现的次数
* @author zhonglinsen
* 2016-3-1 下午
*/
public class StringSubStrExistInFatherStr {
public static void main(String[] args) {
String str="abeefddfadeeabfkkeeabeeabeerfab";
String str1="ab";
String str2="ee";
String str3="f";

System.out.println(getNumSubInFatherStr(str, str1));
System.out.println(getNumSubInFatherStr(str, str2));
System.out.println(getNumSubInFatherStr(str, str3));
}

public static int getNumSubInFatherStr(String strFather,String strSub){
System.out.println(strFather);
int num=0;
int i=0;
//注意这里的遍历次数:     因为当i置于strFather.length()-strSub.length()时候,如果
//String strTemp=strFather.substring(i,i+strSub.length() 得到的strTemp仍然不是所匹配的,则不需要再往下
//遍历了,因为到那个时候若是再执行 strFather.substring(i,i+strSub.length() 就会报异常:下标越界
while(i <= strFather.length()-strSub.length()){

//if (strFather.indexOf(strSub) != -1) {   这样写明显不对

//先进行字符串的截取,再进行equals()匹配,若匹配到了,则跑标往后移动strSub.length()个位置,否则移动一个位置
String strTemp=strFather.substring(i,i+strSub.length());
if (strSub.equals(strTemp)) {
//如果找到了一次strSub   num 就加一次   同时跑标i往后移动  strSub.length()个位置
num += 1;
i += strSub.length();
}else{
//如果找不到strSub  那么num不变,而跑标i往后移动一个位置
i += 1;
}
}

return num;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: