字符串匹配问题:输入一个字符串,计算其中包含的连续给定的子字符串的个数。
例如输入字符串" EFABCABCABCDABCDD ” , 给定子字符串" ABC” ,输出是 3 。
函数原型: int countsub( char *str, char *subs ) 。
参数说明: str 保存输入的字符串的首地址, subs 保存需要统计的子字符串的首地址。
返回值:包含的连续子字符串的个数。
预设代码
countsub_H20.c
- /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */
- #include <stdio.h>
- int countsub( char *str, char *ss );
- main( )
- {
- char s1[1000] = {0}, s2[100] = {0};
- gets(s1);
- gets(s2);
- printf("%d\n", countsub( s1, s2 ) );
- }
- /* PRESET CODE END - NEVER TOUCH CODE ABOVE */
期待的输出时间限制内存限制额外进程
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
#include <stdio.h>
int countsub( char *str, char *ss );
int main( )
{
char s1[1000] = {0}, s2[100] = {0};
gets(s1);
gets(s2);
printf("%d\n", countsub( s1, s2 ) );
}
int countsub( char *str, char *ss ){
int len=0,i=0,num=0,j=1,tin=1;
for(i=0;ss[i]!='\0';i++){
len++;
}
for(i=0;(str[i]!='\0')&&tin;i++){
if(num&&(str[i]!=ss[0])){break;}
if(str[i]==ss[0]){
for(j=1;j<len;j++){
if(str[i+j]==ss[j]){
}else{tin=0;printf("hhh\n");}
}
if(j==len){num++;i=i+len-1;}
}
}
return num;
}