假设我们有一个称为单词的字符串列表和另一个称为字母的字符串列表,我们必须找到单词中最长字符串的长度,该长度可以由字母中的字符组成。如果无法形成单词,则返回0。在这里,我们不能重复使用字母。
因此,如果输入像单词= [“ dog”,“ cat”,“ rat”,“ bunny”,“ lion”,“ bat”],字母=“ gabctnyu”,则输出将为3,因为我们可以使单词“ cat”或“ bat”,因此最大长度为3。
为了解决这个问题,我们将遵循以下步骤-
ref:=包含字母及其频率的映射
最大:= 0
对于单词中的每个单词,
最大:= l
如果w [k] <= ref [k],则
除此以外,
计数器:=计数器+ 1
从循环中出来
w:=带有单词字母及其频率的映射
l:=字长
计数器:= 0
对于w中的每个k
如果l> max且w的大小与counter相同,则
最大回报
让我们看下面的实现以更好地理解-
from collections import Counter class Solution: def solve(self, words, letters): ref = Counter(letters) max = 0 for word in words : w = Counter(word) l = len(word) counter = 0 for k in w : if w[k] <= ref[k]: counter+=1 pass else : break if l > max and len(w) == counter: max = l return max ob = Solution()words = ["dog", "cat", "rat", "bunny", "lion", "bat"] letters = "gabctnyu" print(ob.solve(words, letters))
["dog", "cat", "rat", "bunny", "lion", "bat"], "gabctnyu"
输出结果
3