问题描述
给定一个字符串 s 和一些长度相同的单词 words。在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置。
注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。
示例 1:
| 1 | 输入: | 
示例 2:
| 1 | 输入: | 
解题思路
首先将words转换成字典word_dict,key为单词,value为单词出现的次数。以words所有单词总长度为窗口,截取字符串s,然后再将子串以单词长度进行分割。如果分割出的子串包含于words中,则word_dict计数相应的减1(计数等于0时,移除该单词),否则进行下一窗口截取。如果最后word_dict为空,则表示找到字符串可以用words所有单词完全匹配。
Code
| 1 | class Solution: | 
问题扩展
本题需要匹配的words列表单词长度是相同的,如果不相同了?
比如:
| 1 | 输入: | 
基于以上思路,一种方法是修改子串的校验方法,使用逐字比较。代码如下:
| 1 | class Solution: | 
 
        