- 思路:比较数组和被比较数组各设立一个循环,比较数组作为内循环,用比较数组的首字符进行判断,true:开始遍历判断两字符串的对应位,false:外层循环递进,开始下一次判断
- 注意点:
- 单个字符和多个字符情况;
- 相同的匹配字符重匹配情况;如"11"匹配数组内容"111111",正确应该只有三次
//获取一个字符串在另一个字符串中出现的次数。 比如:获取“ ab”在 “abkkcadkabkebfkabkskab” 中出现的次数 @Test public void isCount(){ String str1 = "aa"; String str2 = "aabjkdaaaaafjksdabkjdfsdabj"; //将字符串转换成字符数组 char[] ch1 = str1.toCharArray(); char[] ch2 = str2.toCharArray(); int len1 = str1.length(); int len2 = str2.length(); int count = 0;//记录出现次数 boolean loopFlag = true;//设置一个标识,用于判断是否找到匹配字符的开关 for(int i = 0;i < len2;i++){ //用比较数组的首元素进行匹配,一旦匹配到相同的字符,开始后继的检测 if(ch1[0] == ch2[i]){ for(int j = 0,k = i;j < len1;j++,k++){ if(ch1[j] == ch2[k]){ //比较完最后一个字符元素且相同,计次器+1 if(j == len1-1){ count++; i += len1 -1;//用于跳过已在匹配的子字符串范围内的长度,-1是为了抵消循环的递增 loopFlag = false; } } else break;//一旦发现对应位数不相等,退出检测 } } } if(loopFlag){ System.out.println("没有匹配的字符串!"); } else { System.out.println("匹配的字符串出现次数有:"+count+"次"); } }
获取一个字符串在另一个字符串中出现的次数
猜你喜欢
转载自www.cnblogs.com/csyh/p/12272671.html
今日推荐
周排行