这题要我们通过两个字符串的比较,统计字符串s2在s1中出现的次数,c++代码如下:
#include<stdio.h>
#include<string.h>
char s1[1005], s2[1005];
int main() {
fgets(s1, 1004, stdin);//输入第一行的字符串
fgets(s2, 1004, stdin);//输入第二行的字符串
int len1 = strlen(s1) - 1;//-1是为了减去'\0'结束符
int len2 = strlen(s2) - 1;
int ans = 0;//存储答案
for (int i = 0;i + len2 - 1 < len1;i++)
{
bool matched = true;
for (int j = 0;j < len2;j++)
{
if (s1[i + j] != s2[j])
{
matched = false;
break;
}
}
if (matched == true)
{
ans++;
}
}
printf("%d", ans);
return 0;
}
代码中,嵌套了两层循环
外层循环:遍历s1字符串,当i遍历到s1-s2的长度时,即可结束循环
内层循环:遍历s2字符串,当j遍历到的s2字符与s1遍历到的字符不一致是,matched改为false,并退出循环
当s2完全符合时,ans++,最后统计所有答案次数