看流星社区

 找回密码
 注册账号
查看: 1638|回复: 0

算法练习Mystrstr

[复制链接]

该用户从未签到

发表于 2017-6-1 13:34:24 | 显示全部楼层 |阅读模式
草稿
  1. hello wolrd
  2. hxl
  3. if(*pFirst == *pFindFirst)
  4.     pFirst ++;
  5.     pFindFirst ++;
  6.     if(*pFirst == *pFindFirst)
  7.         pFirst ++;
  8.         pFindFirst ++;
  9. for(int i ; i < strlen(hello wolrd) ; i++)
  10. {
  11.     if(*pFindFirst == '\0')
  12.         return 0;
  13.     if(*pFirst == *pFindFirst)
  14.     {
  15.         pFirst++;
  16.         pFindFirst++;
  17.         count ++;
  18.         if(count == strlen(hel))
  19.             return pFirst - count;
  20.         continue;
  21.     }else
  22.     {
  23.         count = 0;
  24.         pFindFirst = findstr;
  25.         pFirst++;
  26.     }
  27. }
  28. return 0;
复制代码


于是有了下面代码

  1. #include <stdio.h>
  2. #include <Windows.h>
  3. size_t mystrlen(const char* str)
  4. {
  5.     return (NULL == str || *str =='\0') ? 0 : mystrlen(str+1) + 1;
  6. }
  7. char* mystrstr(const char* Srcstr, const char* findstr)
  8. {
  9.     if(Srcstr == NULL || findstr == NULL || *Srcstr == '\0' ||*findstr == '\0')
  10.         return NULL;
  11.     const char *pFindFirst = findstr;
  12.     const char* pFirst = Srcstr;
  13.     int count = 0;
  14.     int findstrlen = mystrlen(findstr);
  15.     int srclen = mystrlen(Srcstr);
  16.     for(int i = 0 ; i < srclen ; i++)
  17.     {
  18.         if(*pFindFirst == '\0')
  19.             return NULL;
  20.         if(*pFirst == *pFindFirst)
  21.         {
  22.             pFirst++;
  23.             pFindFirst++;
  24.             count ++;
  25.             if(count == findstrlen)
  26.                 return (char*)(pFirst - count);
  27.             continue;
  28.         }else
  29.         {
  30.             count = 0;
  31.             pFindFirst = findstr;
  32.             pFirst++;
  33.         }
  34.     }
  35.     return NULL;
  36. }
  37. void main()
  38. {
  39.     EX:
  40.     char *str = (char*)malloc(250);
  41.     char *findstr = (char*)malloc(250);
  42.     memset(str,'\0',250);
  43.     memset(findstr,'\0',250);
  44.     printf("input src string :");
  45.     gets(str);
  46.     printf("\ninput find string :");
  47.     gets(findstr);
  48.     printf("\n");
  49.     char* pRetstr = mystrstr(str, findstr);
  50.     if(pRetstr != NULL)
  51.         printf("find string is :%s\n",pRetstr);
  52.     else
  53.         printf("no find!\n");
  54.     printf("ExitProcess ? Y # N\n");
  55.     memset(str,'\0',250);
  56.     gets(str);
  57.     if(*str == 'n' || *str == 'N')
  58.         goto EX;
  59.     else
  60.     {
  61.         free(str);
  62.         free(findstr);
  63.         ExitProcess(0);
  64.     }
  65. }
复制代码
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 12:32

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表