美文网首页
30.leetcode题目讲解(Python):与所有单词相关联

30.leetcode题目讲解(Python):与所有单词相关联

作者: 夏山闻汐 | 来源:发表于2018-10-28 15:19 被阅读59次

    题目如下:


    题目

    通过滑动窗口来取子字符串,并通过字典对象比较单词的出现次数可以求解这个问题。参考代码如下:

    class Solution:
        def findSubstring(self, s, words):
            """
            :type s: str
            :type words: List[str]
            :rtype: List[int]
            """
            # 初始化
            strlen = 0
            res = []
    
            if strlen > len(s) or len(s) == 0 or len(words) == 0:
                return res
    
            dic_words = {}
    
            # 转换为字典,并计算出现次数
            for w in words:
                if w in dic_words:
                    dic_words[w] += 1
                else:
                    dic_words[w] = 1
    
            # 子串长度
            len_word = len(words[0])
            len_words = len(words)
            strlen += len_word * len_words
    
            j = 0
    
            # 子串滑动窗口
            while j + strlen <= len(s):
                dic_substr = {}
                substr = s[j: j + strlen]
                k = 0
                # 单词滑动窗口
                while k + len_word <= len(substr):
                    if substr[k: k + len_word] in dic_words:
                        if substr[k: k + len_word] in dic_substr:
                            dic_substr[substr[k: k + len_word]] += 1
                        else:
                            dic_substr[substr[k: k + len_word]] = 1
                        k = k + len_word
                    else:
                        break
    
                if dic_words == dic_substr:
                    res.append(j)
    
                j = j + 1
    
            return res
    

    其它题目:leetcode题目答案讲解汇总(Python版 持续更新)

    ps:如果您有好的建议,欢迎交流 :-D,
    也欢迎访问我的个人博客 苔原带 (www.tundrazone.com)

    相关文章

      网友评论

          本文标题:30.leetcode题目讲解(Python):与所有单词相关联

          本文链接:https://www.haomeiwen.com/subject/troptqtx.html