码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 每日一题 30. 串联所有单词的子串

时间:2020-05-12 13:33:25      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:height   array   窗口   def   inf   rds   result   image   png   

 

技术图片

滑动窗口法

思路:

由于给定words列表中每个单词长度是一样的,则我们可以通过单词个数乘以长度得到要比对子串的长度,然后在原始字符串不断滑动比对。找到每个子串后,可以将子串按照单词长度拆分变成数组,只需要比对拆分后的数组中元素是否和words中一致即可。

代码:

 

class Solution:
    def findSubstring(self, s: str, words: List[str]) -> List[int]:
        if not s or not words:
            return []
        strlen = len(s)
        listlen = len(words)
        wordlen = len(words[0])
        sbstrlen = listlen * wordlen
        result = []
        for i in range(strlen-sbstrlen+1):
            tempStr = s[i:i+sbstrlen]
            tempArray = []
            for j in range(0,sbstrlen-wordlen+1,wordlen):
                tempArray.append(tempStr[j:j+wordlen])
            isin = True
            for word in words:
                if word not in tempArray:
                    isin = False
                    break
                else:
                    tempArray.remove(word)
            if isin:
                result.append(i)
        return result

 

leetcode 每日一题 30. 串联所有单词的子串

标签:height   array   窗口   def   inf   rds   result   image   png   

原文地址:https://www.cnblogs.com/nilhxzcode/p/12875478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!