[LeetCode]Substring with Concatenation of All Words
2015-10-28 15:47
417 查看
Substring with Concatenation of All Words
My SubmissionsQuestion
Total Accepted: 42899 Total
Submissions: 215720 Difficulty: Hard
You are given a string, s, and a list of words, words, that are all of the same length. Find all starting indices of substring(s) in s that
is a concatenation of each word in wordsexactly once and without any intervening characters.
For example, given:
s:
"barfoothefoobarman"
words:
["foo", "bar"]
You should return the indices:
[0,9].
(order does not matter).
Subscribe to see which companies asked this question
这个题目是一个非常让人蛋疼的事情,提交了好多次都是超时。尽量在各个地方节约时间
上代码
import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class Solution { public List<Integer> findSubstring(String s, String[] words) { List<Integer>result = new ArrayList<>(); HashMap<String, Integer>hashMap=new HashMap<>(); HashMap<String, Integer>curHashMap=new HashMap<>(); if(words.length==0||s.length()<words[0].length())return result; int len=words[0].length(); for(int i=0;i<words.length;i++){ Integer count = hashMap.get(words[i]); if(count==null){ hashMap.put(words[i], 1); } else{ hashMap.put(words[i],count+1); } } //因为题目中要求words中所有的词都出现一变,所以i的范围要控制,减小循环次数 for(int i = 0;i<=s.length()-len*words.length;i++){ int j; curHashMap.clear(); for(j=0;j<words.length;j++){ String word = s.substring(i+j*len,i+(j+1)*len); if(!hashMap.containsKey(word)){ break; } Integer count = curHashMap.get(word); if (count==null) { curHashMap.put(word, 1); } else{ curHashMap.put(word,count+1);//这里用的是+号,如果用hashmap-1的话会超时 } if(curHashMap.get(word)>hashMap.get(word)){ break; } } if(j==words.length){ result.add(i); } } return result; } public static void main(String[]args){ Solution solution = new Solution(); System.out.println(solution.findSubstring("aaaa",new String[]{"aa","aa"})); } }
相关文章推荐
- Virtualbox WDDM之DxgkDdiPatch
- System.Web.Caching.Cache类 缓存 各种缓存依赖
- ios的第一篇博客
- postgresql 忘记 postgres 密码
- 要特别注意数据是否溢出,另外,int是16位,long是32位,而long long才是64位int
- 如何正确挑选优质DC插座
- 部署LyncServer2013之一 前期准备
- 王团结:七牛是如何搞定每天500亿条日志的
- MySQL 5.6 & 5.7最优配置文件模板
- DOM操作style样式——<link>、<style>、<p style=''>的区别
- ios微信自动播放音乐
- RSA的傻瓜原理
- C#3.0新特性之扩展方法介绍
- BZOJ 1853 [Scoi2010]幸运数字 (容斥原理)
- Win7上安装32位Oracle客户端错误解决方法:[INS-30131] 执行安装程序验证所需的初始设置失败
- Android小记:EditText的两个常用属性
- leetcode 260 : Single Number III
- Python的表达式与运算符19
- android或 java内存泄漏需要注意的地方
- 部署LyncServer2013之二 扩展架构