字符串匹配问题:输入一个字符串,计算其中包含的连续给定的子字符串的个数。
例如输入字符串" 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;
}
这篇博客介绍了一个计算输入字符串中连续给定子字符串出现次数的函数`countsub`。函数接受两个参数,一个是输入字符串的首地址,另一个是需要统计的子字符串的首地址。通过示例展示了如何统计字符串'EFABCABCABCDABCDD'中连续的'ABC'子串的数量,结果为3。此外,还给出了一个未完成的测试用例,用于检查函数的正确性。
939

被折叠的 条评论
为什么被折叠?



