题目要求:给定一个字符串 A 和一个字符串 B,求 B 在 A 中的出现次数。A 和 B 中的字符均为英语大写字母或小写字母。A 中不同位置出现的 B 可重叠。
输入格式:
输入共两行,分别是字符串 A 和字符串 B。
输出格式:
输出一个整数,表示 B 在 A 中的出现次数。
样例
数据范围与提示 1<=A,B的长度≤10^6,
,A,B仅包含大小写字母。
遇到问题:我在这OJ系统上面运行时出现的Runtime error(NZEC),这是语法问题吗?
编译器:C++(clang7.0.1)
#include
#include
int main()
{
char a1[1000],b1[1000];
int count=0;
scanf("%s%s",a1,b1);
for(int i=0;i<strlen(a1);i++)
{
if(a1[i]==b1[0])
{
int k=i+1,j;
for(j=1;j<strlen(b1);j++,k++)
{
if(a1[k]!=b1[j])
break;
}
if(j==strlen(b1))
count++;
}
}
printf("%d\n",count);
return 0;
}
因为a1没有初始化,所以超出zyzyzyz的部分都是无意义的,
当按程序a1运行到最后一个z时,你k=i+1,k=i+2 访问的是无意义的内容/内存
会不会是数组定义的问题,题目要求中A,B的长度<=10^6,定义应该是a[1000005]和b[1000005]吧。
(搦亟乱入,错了请别吐槽*_*)