Substring with Concatenation of All Words
来源:互联网 发布:加粉猫软件下载 编辑:程序博客网 时间:2024/06/18 04:34
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).
注意此题字典中可能存在重复的字符串。不会写,参考:http://www.cnblogs.com/springfor/p/3872516.html
Source
public List<Integer> findSubstring(String S, String[] L) { List<Integer> a = new ArrayList<Integer>(); if(S.length() == 0 || L.length == 0) return a; HashMap<String, Integer> hm = new HashMap<String, Integer>(); for(int i = 0; i < L.length; i++){ if(!hm.containsKey(L[i])){ hm.put(L[i], 1); } else{ hm.put(L[i], hm.get(L[i]) + 1); } } for(int i = 0; i < L[0].length(); i++){ int cnt = 0; int index = i; HashMap<String, Integer> cur = new HashMap<String, Integer>(); for(int j = i; j <= S.length() - L[0].length(); j += L[0].length()){ String temp = S.substring(j, j + L[0].length()); if(!hm.containsKey(temp)){ cur.clear(); cnt = 0; index = j + L[0].length(); } else{ if(!cur.containsKey(temp)) cur.put(temp, 1); else{ cur.put(temp, cur.get(temp) + 1); } if(cur.get(temp) <= hm.get(temp)) cnt++; else{ while(cur.get(temp) > hm.get(temp)){ String b = S.substring(index, index + L[0].length()); cur.put(b, cur.get(b) - 1); index = index + L[0].length(); if(cur.get(b) < hm.get(b)) cnt--; } } if(cnt == L.length){ a.add(index); String b = S.substring(index, index + L[0].length()); cur.put(b, cur.get(b) - 1); index = index + L[0].length(); cnt--; } } } } return a; }
0 0
- LeetCode: Substring with Concatenation of All Words
- LeetCode : Substring with Concatenation of All Words
- LeetCode29: Substring with Concatenation of All Words
- [Leetcode] Substring with Concatenation of All Words
- Substring with Concatenation of All Words
- Substring with Concatenation of All Words
- [LeetCode]Substring with Concatenation of All Words
- Substring with Concatenation of All Words
- LeetCode-Substring with Concatenation of All Words
- [LeetCode] Substring with Concatenation of All Words
- 26 - 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 Substring with Concatenation of All Words
- 服务器架设笔记——Apache模块开发基础知识
- canvas描绘动态文字
- leetcode_100_Same Tree
- 互联网思维——传统商业的终结与重塑
- 无限极分类
- Substring with Concatenation of All Words
- Aandroid在ViewPager中添加ListView
- Spark streaming-1
- 热情狂奔
- 浅谈parcelable与serializable
- Android Settings中的默认设置(转载)
- android学生信息管理系统源码
- 动态规划小结——最优配对问题
- poj1459