Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาความยาวคำที่ยาวที่สุดที่สร้างได้จากตัวอักษรที่กำหนดใน Python

ให้ลิสต์คำ words และสตริง letters หาความยาวคำที่ยาวที่สุดใน words ที่สร้างจาก letters ได้ (แต่ละตัวอักษรใช้ได้ครั้งเดียว)

ตัวอย่าง: words=["dog","cat","rat","bunny","lion","bat"], letters="gabctnyu" → 3 ("cat" หรือ "bat")

อัลกอริธึม

  • นับความถี่ตัวอักษรใน letters (ref)
  • สำหรับแต่ละคำ: นับความถี่ (w) ถ้าทุกตัวอักษรใน w มีความถี่ ≤ ref → คำนี้สร้างได้
  • เก็บความยาวสูงสุดของคำที่สร้างได้

การนำไปใช้

from collections import Counter

class Solution:
    def solve(self, words, letters):
        ref = Counter(letters)
        max_len = 0
        for word in words:
            w = Counter(word)
            if all(w[ch] <= ref[ch] for ch in w):
                max_len = max(max_len, len(word))
        return max_len

ob = Solution()
print(ob.solve(["dog","cat","rat","bunny","lion","bat"], "gabctnyu"))  # 3