给定源字符串S和模式字符串P,计算模式字符串P在源字符串S中出现的次数。
输入格式: 第一行是源字符串 S s.t。 1 <= |S| <= 8192 个字符 第二行是模式字符串 P st。 1 <= |P| <= 8192 个字符
输出格式: 输出一个整数,其中包含模式字符串 P 在源字符串 S 中出现的次数。
这段代码有什么问题吗?
#include<stdio.h>
int main()
{
int i=0,j=0,k=0,loss=0,noss=0;
char ms[8192],ss[8192];
scanf("%s",&ms);
scanf("%s",&ss);
while(ss[loss]!='\0')
{
loss=loss+1;
}
while(ms[i]!='\0')
{
j=0;
if(ms[i]==ss[0])
{
j=j+1;
k=i+1;
while(ss[j]!='\0')
{
if(ms[k]==ss[j])
j++;
else
break;
}
if(j==loss-1)noss++;
}
i++;
}
printf("%d",noss);
return(0);
}
测试用例 1
输入:密西西比州 伊西
预期输出:2
实际输出:2
测试用例 2
输入:瓦加杜古 欧
预期输出:3
实际输出:0
最佳答案
顺便说一句,只是为了答案,试试这个。查看第 25-28 行和第 32 行的区别。
18 if(ms[i]==ss[0])
19 {
20 j=j+1;
21 k=i+1;
22 while(ss[j]!='\0')
23 {
24 if(ms[k]==ss[j])
25 {
26 j++;
27 k++;
28 }
29 else
30 break;
31 }
32 if(j==loss)noss++;
33 }
关于C程序计算模式字符串的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31992338/