用 Python 编写程序,查找给定字母组成的最长字符串的长度

pythonserver side programmingprogramming更新于 2026/1/8 22:04:17

假设我们有一个字符串列表,列表中包含单词和另一个字符串,列表中包含字母,我们需要找出由字母中的字符组成的单词中最长字符串的长度。如果无法组成单词,则返回 0。这里我们不能重复使用字母。

因此,如果输入为 words = ["dog", "cat", "rat", "bunny", "lion", "bat"], letters = "gabctnyu",则输出将为 3,因为我们可以组成单词 "cat" 或 "bat",因此最大长度为 3。

为了解决这个问题,我们将遵循以下步骤 −

  • ref := 带有字母及其频率的映射
  • max := 0
  • 对于 words 中的每个单词,执行
    • w := 带有单词字母及其频率的映射
    • l := 单词的大小
    • counter := 0
    • 对于 w 中的每个 k,执行
      • 如果 w[k] <= ref[k],则
        • counter := counter + 1
      • 否则,
        • 退出循环
    • 如果 l > max 且 w 的大小与 counter 相同,则
      • max := l
  • 返回 max

让我们看看下面的实现以便更好地理解 −

示例

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

相关文章


有用资源