1609: 大三下之登峰造极
Time Limit: 1 Sec Memory Limit: 128 MB[ Submit][ Status][ Web Board]
Description
温故而知新,是时候复习下kmp算法啦。
Input
两个字符串,A,B,找出B在A串中出现的次数<长度小于1001>
Output
输出结果
Sample Input
AAAA AA
Sample Output
2
【分析】
数据比较水....不一定kmp..暴力匹配加个break也可以过...
【代码】
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char s1[2000000],s2[20000];
while (~scanf("%s%s",s1,s2))
{
int sum=0;
int len1=strlen(s1);
int len2=strlen(s2);
for (int i=0;i<len1-len2+1;i++)
if (s1[i]==s2[0])
{
int j;
for (j=1;j<len2;j++)
if (s1[i+j]!=s2[j])
break;
if (j==len2)
{
i+=j-1;
sum++;
}
}
printf("%d\n",sum);
}
return 0;
}
#include <string.h>
using namespace std;
int main()
{
char s1[2000000],s2[20000];
while (~scanf("%s%s",s1,s2))
{
int sum=0;
int len1=strlen(s1);
int len2=strlen(s2);
for (int i=0;i<len1-len2+1;i++)
if (s1[i]==s2[0])
{
int j;
for (j=1;j<len2;j++)
if (s1[i+j]!=s2[j])
break;
if (j==len2)
{
i+=j-1;
sum++;
}
}
printf("%d\n",sum);
}
return 0;
}