leetcode28 Implement strStr()
2017-11-08 14:10
323 查看
leetcode28 Implement strStr()
class Solution { public: int strStr(string haystack, string needle) { if(needle.size()<1) return 0; if(haystack.size()<1 || haystack.size()<needle.size()){ return -1; } int maxPos = haystack.size() - 1; int moveStep =0; int needleInHayHeadCursor = 0; vector<int> moveMap; map<char,int> lastOccurrMap; int i=0; int needleCursor = needle.size() - 1; while(needleCursor >= 0) { moveMap.push_back(1); needleCursor--; } int sizeGap = haystack.size() - needle.size(); while(needleInHayHeadCursor <= sizeGap){ moveStep = 1; //cout<<"needleInHayHeadCursor:"<<needleInHayHeadCursor<<" loop: "; for(i=0;i<needle.size();i++){ //cout<<" "<<needle[i]<<"-"<<haystack[needleInHayHeadCursor+i]; if(needle[i]!=haystack[needleInHayHeadCursor+i]){ break; } } //cout<<" :loop "<<i<<" "; if(i==needle.size()){ return needleInHayHeadCursor; }else{ needleCursor = i - 1;//cout<<" movestep:"; lastOccurrMap.clear(); while(needleCursor >= 0) { if(lastOccurrMap.find(needle[needleCursor]) == lastOccurrMap.end()){ moveMap[needleCursor] = i - needleCursor; }else{ moveMap[needleCursor] =lastOccurrMap[needle[needleCursor]] - needleCursor ; } lastOccurrMap[needle[needleCursor]] = needleCursor; //cout<<" "<<lastOccurrMap[needle[needleCursor]]; //cout<<" "<<moveStep; moveStep = moveMap[needleCursor] > moveStep ? moveMap[needleCursor] : moveStep; needleCursor--; } if(lastOccurrMap.find(haystack[needleInHayHeadCursor+i]) == lastOccurrMap.end()){ moveStep = i+1 ; } //cout<<":movestep"<<moveStep<<endl; needleInHayHeadCursor += moveStep; } } return -1; } };
相关文章推荐
- 【leetcode】【28】Implement strStr()
- 【LeetCode28】【 Implement strStr()】length,length(),size()
- LeetCode(28)Implement strStr()
- Leetcode 28 Implement strStr()
- 【LeetCode 28_字符串_匹配】Implement strStr()
- LeetCode 28_Implement strStr()
- leetcode[28]Implement strStr()
- Leetcode28: Implement strStr()
- LeetCode(28)Implement strStr()
- LeetCode 28 Implement strStr()(实现strStr()函数)
- Leetcode 28 Implement strStr()
- LeetCode 28 Implement strStr()
- LeetCode-28-Implement strStr() KMP模板题
- 28 leetcode - Implement strStr()
- leetcode 28 -- Implement strStr()
- LeetCode 28 : Implement strStr() (Java)
- 【LeetCode从零单排】No28 Implement strStr()
- LeetCode28 Implement strStr()
- LeetCode_OJ【28】Implement strStr()
- LeetCode 28 Implement strStr()(子字符串查找)