leetcode28 Implement strStr()
来源:互联网 发布:美化桌面的软件 编辑:程序博客网 时间:2024/05/21 13:21
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; }};
阅读全文
0 0
- [LeetCode28] Implement strStr()
- Leetcode28 Implement strStr()
- LeetCode28:Implement strStr()
- [LeetCode28] Implement strStr()
- Leetcode28: Implement strStr()
- Leetcode28. Implement strStr()
- leetcode28: Implement strStr()
- leetcode28. Implement strStr()
- leetcode28. Implement strStr()
- LeetCode28. Implement strStr()
- leetcode28 Implement strStr()
- LeetCode28. Implement strStr()
- LeetCode28——Implement strStr()
- 【LeetCode28】【 Implement strStr()】length,length(),size()
- Sunday算法的一种Java实现(Leetcode28. Implement strStr())
- Implement strStr()
- Implement strStr()
- Implement strStr()
- ScrollView嵌套ListView listView展示及分页处理
- MacBook Pro 下vue项目开发环境搭建,安装和配置apache
- 使用GnuPG(PGP)加密信息及数字签名教程
- UI 设计师不容错过的12款APP UI 交互设计
- Android 音频播放之SoundPool类的使用
- leetcode28 Implement strStr()
- 11月6日云栖精选夜读:阿里云双11访谈之云安全
- Mac安装Python支持包
- 每日一练20171106
- Android进阶(三)Android 中的IPC机制(1)
- qlistwidget中的增删改
- c语言:随机数rand()
- js删除指定table的td
- JAVASCRIPT学习笔记之强制类型转换