查找子字符串

来源:互联网 发布:dagger2 源码解析 编辑:程序博客网 时间:2024/06/04 19:54

编写一个函数,该函数的功能是在给定的字符串中查找可能的子字符串,

该子字符串是由给定的同一字符组成的最长的字符串。

例如:给定字符串是“ asddrrddddds ”,给定的字符是‘ d ’ , 获得的子字符串是“ ddddd ”。

函数原型: char * search(char *str, char ch) 。

参数说明: str 保存给定的字符串的首地址(字符串长度不大于100), ch 保存给定的字符。

函数返回值:找到的符合要求的子字符串的首地址。如果没有符合要求的子字符串,返回一个空指针。

预设代码

前置代码

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include <stdio.h>char *search( char *str, char ch );main(){    char s[100] = {0}, ch, *p;    gets(s);    ch = getchar();    p = search( s, ch );    if( p == NULL )printf("There is not the sub-string.");    else        while( *p == ch )            putchar( *p++ );    printf("\n");   return 0;}/* PRESET CODE END - NEVER TOUCH CODE ABOVE */


 测试输入关于“测试输入”的帮助期待的输出关于“期待的输出”的帮助时间限制关于“时间限制”的帮助内存限制关于“内存限制”的帮助额外进程关于“{$a} 个额外进程”的帮助测试用例 1以文本方式显示
  1. asddrrddddds↵
  2. d↵
以文本方式显示
  1. ddddd↵
1秒64M0测试用例 2以文本方式显示
  1. abcde↵
  2. 1↵
以文本方式显示
  1. There is not the sub-string.↵
1秒64M0
代码:
#include <string.h>char *search( char *str, char ch ){int i,last,count=0,max=0;for(i=0;str[i];i++){if(str[i] == ch){count++;if(count>max){max = count;last = i;}}elsecount = 0;}if(max==0)return NULL;elsereturn str+last-max+1;}