C/C++查找子串

查找子串

  • 实现自己的查找子串功能,需求在字符串中查找对应的子串,如果有,返回字符串第一个字母的位置,如没有返回-1.

代码示例:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//优化思路 memcmp(str,substr,3)==0
int myStrstr(char*str, char*subStr)
{
   
        int num = 0;
        while (*str!='\0')
        {
   
               if (*str != *subStr)
               {
   
                       str++;
                       num++;
                       continue;
               }
               //创建临时指针
               char*tmpStr = str;
               char*tmpSubStr = subStr;
               while (*tmpSubStr!='\0')
               {
   
                       if (*tmpStr != *tmpSubStr)
                       {
   
                              //匹配失败
                              str++;
                              num++;
                              break;
                       }
                       tmpStr++;
                       tmpSubStr++;
               }
               if (*tmpSubStr == '\0')
               {
   
                       //匹配成功
                       return num;
               }
        }
        return - 1;
}
void test01()
{
   
        char*str = "abcdefgdnf";
        int ret = myStrstr(str, "dnf");
        if (ret == -1)
        {
   
               printf("未找到子串\n");
        }
        else
        {
   
               printf("找到了子串,位置为:%d\n",ret);
        }
}
int main()
{
   
        test01();
        return EXIT_SUCCESS;
}

更多文章,敬请关注微信公众号:YQ编程

数据结构与算法 文章被收录于专栏

本专栏收录数据结构与算法知识点

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
Rena1ssanc...:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务