[HashTable]030|[HashTable]030 Substring with Concatenation of All Words
- 分类:HashTable
- 考察知识点:HashTable 数组遍历
- 最优解时间复杂度:O(nm+n)*
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 words exactly once and without any intervening characters.
Example 1:
Input:
s = "barfoothefoobarman",
words = ["foo","bar"]
Output: [0,9]
Explanation: Substrings starting at index 0 and 9 are "barfoor" and "foobar" respectively.
The output order does not matter, returning [9,0] is fine too.
Example 2:
Input:
s = "wordgoodstudentgoodword",
words = ["word","student"]
Output: []
代码:
解法:
class Solution:
def findSubstring(self, s, words):
"""
:type s: str
:type words: List[str]
:rtype: List[int]
"""
#先判定边界条件
if len(s)==0 or len(words)==0:
return []#先把这个words存到
words_length=len(words)
word_length=len(words[0])if len(s)0):
if s[start:start+word_length] not in words_dict_copy:
i
break
if words_dict_copy[s[start:start+word_length]]==0:
break
words_dict_copy[s[start:start+word_length]]-=1
start+=word_length
count-=1
if count==0:
res.append(i)
return res
讨论: 【[HashTable]030|[HashTable]030 Substring with Concatenation of All Words】1.这道题目是道Hard题,我就不深究它了,Beats的人少就少吧
2.这道题的思路是首先判断是否可以返回空的几个条件,然后再是把words全部放到dict中去,然后在每次循环的时候弄一个dict_copy,再循环判断dict_copy中的数据
文章图片
貌似是我有史以来速度最慢的一次
推荐阅读
- 20190302|20190302 复盘翻盘
- 20190320《个体崛起》
- 杭电oj——2030汉字统计
- 20210307《挑战赛怂人胆》【能量将帅挑战赛(01)】
- LeetCode(03)Longest|LeetCode(03)Longest Substring Without Repeating Characters
- HashMap&ConcurrentHashMap&HashTable
- 20180305|20180305 小确幸
- 【0306读书感悟】这样制定计划,确定人生目标,才更容易成功
- 20190302-20190308
- 030/100|030/100 #3 things of a nice day#3.31