当前位置: 代码迷 >> 综合 >> LeetCode 792.匹配字符列的单词书
  详细解决方案

LeetCode 792.匹配字符列的单词书

热度:79   发布时间:2023-10-21 02:49:09.0

给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数。

示例:
输入: 
S = "abcde"
words = ["a", "bb", "acd", "ace"]
输出: 3
解释: 有三个是 S 的子序列的单词: "a", "acd", "ace"。

注意:

  • 所有在words和 S 里的单词都只由小写字母组成。
  • S 的长度在 [1, 50000]
  • words 的长度在 [1, 5000]
  • words[i]的长度在[1, 50]
class Solution:def numMatchingSubseq(self, S, words):""":type S: str:type words: List[str]:rtype: int"""w=collections.defaultdict(list)count=0for i in range(len(S)):#记下来每个字母出现的位置w[S[i]].append(i)for i in range(len(words)):nextCharPos=-1flag2=Truefor j in range(len(words[i])):c=words[i][j]if w[c]==[]:#这个字母在s中存在才有可能是子串flag2=Falsebreakelse:#如果不在,该串不是子串flag=True #是否找到合适的下一个字母for k in range(len(w[c])):if w[c][k]>nextCharPos:nextCharPos=w[c][k]flag=Falsebreakif flag: #如果没找到合适的字母,该串不是子串flag2=Falsebreakif flag2:count=count+1return count