## 题目地址 https://leetcode-cn.com/problems/implement-strstr/ ## 思路 ## C++代码 ``` class Solution { public: void preKmp(int* next, const string& s){ next[0]=-1; int j=-1; for(int i=1;i=0 && s[i]!=s[j+1]) j = next[j]; if(s[i]==s[j+1]) j++; next[i]=j; } } int strStr(string haystack, string needle) { if (needle.size() == 0) { return 0; } int next[needle.size()]; preKmp(next, needle); int j = -1; for (int i = 0; i < haystack.size(); i++) { while(j >= 0 && haystack[i] != needle[j + 1]) { j = next[j]; } if (haystack[i] == needle[j + 1]) { j++; } if (j == (needle.size() -1) ) { return (i - needle.size() + 1); } } return -1; } }; ``` > 笔者在先后在腾讯和百度从事技术研发多年,利用工作之余重刷leetcode,本文 [GitHub](https://github.com/youngyangyang04/leetcode-master ):https://github.com/youngyangyang04/leetcode-master 已经收录,欢迎star,fork,共同学习,一起进步。