OCW×inflation 潮牌聯名:復古油畫加絨衛衣 39 元(減 130 元)
阿新 • • 發佈:2021-12-21
KMP模板
主要需要完成next陣列決字串的匹配。
返回的是needle字串首次匹配 haystack字串的首字元的下標(下標是針對haystack字串的)。
1 int strStr(string haystack, string needle) { 2 int n = haystack.size(), m = needle.size(); 3 if(m == 0) return 0; 4 vector<int> next(m); 5 for(int i=1,j=0;i<m;i++){//完成next陣列 6while(j>0 && needle[i]!=needle[j]){ 7 j = next[j-1]; 8 } 9 if(needle[i] == needle[j]){ 10 j++; 11 } 12 next[i] = j; 13 } 14 for(int i=0,j=0;i<n;i++){//完成字串的匹配 15 while(j>0&& haystack[i] != needle[j]){ 16 j = next[j-1]; 17 } 18 if(haystack[i] == needle[j]) j++; 19 if(j == m) return i-m+1; 20 } 21 return -1; 22 }
參考連結:https://leetcode-cn.com/problems/implement-strstr/solution/shi-xian-strstr-by-leetcode-solution-ds6y/