[leetcode] Substring with Concatenation of All Words
来源:互联网 发布:js点击按钮删除div 编辑:程序博客网 时间:2024/05/21 00:19
You are given a string, S, and a list of words, L, that are all of the same length. Find all starting indices of substring(s) in S that is a concatenation of each word in L exactly once and without any intervening characters.
For example, given:
S: "barfoothefoobarman"
L: ["foo", "bar"]
You should return the indices: [0,9]
.
(order does not matter).
思路:假设L中的单位长度为n,依次从S中取长度为n的子串,如果在L中,就记下来。需要借助hash或map,如果整个L都匹配完了,就算是一个concatenation;当匹配错误的时候,S右移一个位置。
参考链接:http://blog.csdn.net/ojshilu/article/details/22212703
代码:
class Solution {public: vector<int> findSubstring(string S, vector<string> &L) { vector<int> res; int n=L[0].size(); int len=n*L.size(); if(len>S.size()) return res; map<string,int> m; for(int i=0;i<L.size();i++) m[L[i]]++; int idx=0; map<string,int> tmp; while(idx<=S.size()-len){ bool flag=true; tmp.clear(); for(int i=idx;i<=idx+n*(L.size()-1);i+=n){ string now=S.substr(i,n); if(m.find(now)==m.end()){ flag=false; break; } tmp[now]++; if(tmp[now]>m[now]){ flag=false; break; } } if(flag==true) res.push_back(idx); idx++; } return res; }};
0 0
- LeetCode: Substring with Concatenation of All Words
- LeetCode : Substring with Concatenation of All Words
- [Leetcode] Substring with Concatenation of All Words
- [LeetCode]Substring with Concatenation of All Words
- LeetCode-Substring with Concatenation of All Words
- [LeetCode] Substring with Concatenation of All Words
- LeetCode:Substring with Concatenation of All Words
- Leetcode: Substring with Concatenation of All Words
- [LeetCode] Substring with Concatenation of All Words
- leetcode Substring with Concatenation of All Words
- leetcode Substring with Concatenation of All Words
- LeetCode Substring with Concatenation of All Words
- LeetCode | Substring with Concatenation of All Words
- LeetCode - Substring with Concatenation of All Words
- Substring with Concatenation of All Words -- LeetCode
- Leetcode: Substring with Concatenation of All Words
- leetcode:Substring with Concatenation of All Words
- LeetCode|Substring with Concatenation of All Words
- Python编程教程 Python游戏课程 Python入门到精通视频
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- 散列表(一):散列表概念、 散列函数构造方法、 常见字符串哈希函数(测试冲突)
- 黑马程序员——java基础——集合框架(1)Collection
- 黑马程序员-01.IOS和MAC OS X简介总结
- [leetcode] Substring with Concatenation of All Words
- 汉化 bussinessSkinForm右键菜单
- 散列表(二):冲突处理的方法之链地址法的实现(哈希查找)
- 自己动手写CPU之第七阶段(10)——除法指令实现过程1
- 差分约束系统
- Java面试题四
- Android 4.0的图形硬件加速及绘制技巧(2)
- javascript工厂模式小例
- 散列表(三):冲突处理的方法之开地址法(线性探测再散列的实现)