博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 30 Substring with Concatenation of All Words
阅读量:4550 次
发布时间:2019-06-08

本文共 1496 字,大约阅读时间需要 4 分钟。

lc30 Substring with Concatenation of All Words

两个hashmap

一个用来记录words[]中每种单词的出现次数,用来之后做匹配

一个用来记录source字符串i~j中每种单词出现次数,与前者比对

思路就是检查source字符串所有连续的长为words[].length()*words[0].length的子串

for(i=0; i<s.length() - words.length()*words[0].length; i++)

 

1 class Solution { 2     public List
findSubstring(String s, String[] words) { 3 if(s.length() == 0 || words.length == 0) 4 return new ArrayList
(); 5 HashMap
count = new HashMap<>(); 6 7 for(String i : words) 8 count.put(i, count.getOrDefault(i, 0) + 1); 9 int len = words[0].length();10 int wordsNum = words.length;11 List
res = new ArrayList<>();12 13 for(int i=0; i
seenWords = new HashMap<>();15 int j = 0;16 while(j < wordsNum){17 String word = s.substring(i + j*len, i + (j+1)*len);18 if(count.containsKey(word)){19 seenWords.put(word, seenWords.getOrDefault(word, 0) + 1);20 if(seenWords.get(word) > count.get(word))21 break;22 23 }else24 break;25 j++;26 }27 if(j == wordsNum){28 res.add(i);29 }30 }31 return res;32 }33 }

 

转载于:https://www.cnblogs.com/hwd9654/p/10992697.html

你可能感兴趣的文章
什么是fortran语言之fortran语言入门
查看>>
开启GDB
查看>>
●POJ 2187 Beauty Contest
查看>>
二叉树_非递归先中后序_递归非递归求深度
查看>>
print(__file__)返回<encoding error>的问题
查看>>
122. 买卖股票的最佳时机 II
查看>>
ActiveMQ 即时通讯服务 浅析
查看>>
gsoap开发webservice
查看>>
LCA || BZOJ 1602: [Usaco2008 Oct]牧场行走 || Luogu P2912 [USACO08OCT]牧场散步Pasture Walking
查看>>
预处理
查看>>
[php] 使用IDE的正则搜索代码
查看>>
大型网站架构与分布式架构
查看>>
趣图:后端工程师是怎样调试CSS的
查看>>
SQL总结
查看>>
python 基础语法
查看>>
AjaxPro使用中遇到的问题之一
查看>>
集合(NSArray,Set,NSMutableArray,NSDictionary)
查看>>
Sum Root to Leaf Numbers
查看>>
Windows Server: 将虚拟机迁移到 Azure (以阿里云为例)
查看>>
C#实现身份证号码验证的方法
查看>>