class Solution {
public:
void getNext(int *next,string needle){int j=0;for(int i=1;i<needle.size();i++){while(j>0 && needle[j]!=needle[i]) j=next[j-1];if(needle[i]==needle[j]) j++;next[i]==j;}}int strStr(string haystack, string needle) {if(needle.size()==0) return 0;vector<int> next(needle.size());getNext(&next[0],needle);int j=0;for(int i=0;i<haystack.size();i++){while(j>0 && haystack[i]!=needle[j]) j=next[j-1];if(haystack[i]==needle[j]) j++;if(j==needle.size()) return i-needle.size()+1;}return -1;}
};
find解答
class Solution {
public:int strStr(string haystack, string needle) {return haystack.find(needle);}
};