Giả sử chúng ta có một danh sách các chuỗi được gọi là các từ và một chuỗi khác được gọi là các chữ cái, chúng ta phải tìm độ dài của chuỗi dài nhất trong các từ có thể được hình thành từ các ký tự trong các chữ cái. Nếu không có từ nào có thể được tạo thành, hãy trả về 0. Ở đây chúng tôi không thể sử dụng lại các chữ cái.
Vì vậy, nếu đầu vào là words =["dog", "cat", "rat", "bunny", "lion", "bat"], letter ="gabctnyu", thì đầu ra sẽ là 3, như chúng ta có thể tạo từ "mèo" hoặc "dơi", vì vậy độ dài tối đa là 3.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- ref:=một bản đồ với các chữ cái và tần số của chúng
- tối đa:=0
- đối với mỗi từ trong các từ, hãy thực hiện
- w:=một bản đồ với các chữ cái của từ và tần số của chúng
- l:=kích thước của từ
- bộ đếm:=0
- đối với mỗi k trong w, thực hiện
- nếu w [k] <=ref [k], thì
- bộ đếm:=bộ đếm + 1
- nếu không,
- ra khỏi vòng lặp
- nếu w [k] <=ref [k], thì
- nếu l> max và kích thước của w giống như bộ đếm, thì
- tối đa:=l
- trả về tối đa
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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))
Đầu vào
["dog", "cat", "rat", "bunny", "lion", "bat"], "gabctnyu"
Đầu ra
3