- 给出一个字符串a,任意给出另外一个字符串b,求出b在字符串a中出现的次数(不重叠计算)
such a="abcbcbca" b="bc" 次数=3
such a="abbbbbba" b="bb" 次数=3 不重叠
代码如下:
#include <stdio.h>
int check_str_appear_times(char a[],int alen,char b[],int blen){
//返回结果
int res=0;
//记录a数组比较位置
int a_move_point=0;
//记录成功次数
int sucCounter=0;
while(a_move_point<alen){
//每次从a的最新位置开始循环
for(int i=a_move_point;i<alen;i++){
if(a[i]==b[sucCounter]){
sucCounter++;
}else{
break;
}
if(sucCounter>=blen){
break;
}
}
//循环结束后统计sucCounter是否等于 blen
if(sucCounter==blen){
//一致,加入结果计数器
res++;
//并将a的比较计数移动b那么长的位置
a_move_point+=sucCounter;
}else{
//不一致 只加一个
a_move_point++;
}
//重置计数
sucCounter=0;
}
return res;
}
int main(){
char a[]={'a','c','c','c','m','n','b','c','d','e','f','b','c'};
char b[]={'b','c'};
printf("%d",check_str_appear_times(a,13,b,2));
}