博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
28. Implement strStr()
阅读量:6452 次
发布时间:2019-06-23

本文共 2018 字,大约阅读时间需要 6 分钟。

28. Implement strStr()

题目

Implement strStr().Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.Example 1:Input: haystack = "hello", needle = "ll"Output: 2Example 2:Input: haystack = "aaaaa", needle = "bba"Output: -1

解析

  • kmp算法
class Solution_28 {public:    // find_first_of()在源串中从位置pos起往后查找,只要在源串中遇到一个字符,该字符与目标串中任意一个字符相同,就停止查找,返回该字符在源串中的位置;若匹配失败,返回npos。    // string查找find()函数,都有唯一的返回类型,那就是size_type,即一个无符号整数(按打印出来的算)。若查找成功,返回按查找规则找到的第一个字符或子串的位置;若查找失败,返回npos,即-1(打印出来为4294967295)    int strStr(string haystack, string needle) { // 字符串匹配        int ret = haystack.find(needle);        return ret;    }    char *strStr1(char *haystack, char *needle) {        int len1 = strlen(haystack);        int len2 = strlen(needle);        if (len1 < len2)        {            return NULL;        }        if (len2 == 0)        {            return haystack;        }        int i = 0;        for (; i < len1 - len2 + 1; i++)        {            int j = 0;            while (haystack[i+j]==needle[j])            {                if (j == len2 - 1)                {                    return haystack + i;                }                j++;            }        }        return NULL;    }    void getNextval(char*p,vector
& next) { int len = strlen(p); next[0] = -1; int k = -1; //前缀序列 int j = 0; while (j < len) { if (k==-1||p[j]==p[k]) { j++; k++; if (p[j]!=p[k]) { next[j] = k; } else { next[j] = next[k]; } } else { k = next[k]; } } } char *strStr(char *haystack, char *needle) { int len1 = strlen(haystack); int len2 = strlen(needle); int i = 0, j = 0; vector
next(128,0); getNextval(needle, next); while (i

题目来源

转载地址:http://nkgwo.baihongyu.com/

你可能感兴趣的文章
bzoj1106[POI2007]立方体大作战tet*
查看>>
解决:Java调用.net的webService产生“服务器未能识别 HTTP 标头 SOAPAction 的值”错误...
查看>>
spring boot configuration annotation processor not found in classpath问题解决
查看>>
【转】正则基础之——神奇的转义
查看>>
团队项目测试报告与用户反馈
查看>>
MyBatis(1)——快速入门
查看>>
对软件工程课程的期望
查看>>
CPU高问题排查
查看>>
Mysql中文字符串提取datetime
查看>>
CentOS访问Windows共享文件夹的方法
查看>>
IOS 与ANDROID框架及应用开发模式对比一
查看>>
由中序遍历和后序遍历求前序遍历
查看>>
JQUERY Uploadify 3.1 C#使用案例
查看>>
coursera 北京大学 程序设计与算法 专项课程 完美覆盖
查看>>
firewall 端口转发
查看>>
wndows make images
查看>>
FS系统开发设计(思维导图)
查看>>
Computer Go Programming 学习
查看>>
我学习参考的网址
查看>>
婚姻 至理名言
查看>>