단어라는 문자열 목록과 문자라는 또 다른 문자열이 있다고 가정하면 문자의 문자로 구성될 수 있는 단어에서 가장 긴 문자열의 길이를 찾아야 합니다. 단어를 만들 수 없으면 0을 반환합니다. 여기서 문자를 재사용할 수 없습니다.
따라서 입력이 단어 =["개", "고양이", "쥐", "토끼", "사자", "박쥐"], 문자 ="gabctnyu"와 같은 경우 출력은 3이 됩니다. 단어 "cat" 또는 "bat"를 만들 수 있으므로 최대 길이는 3입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- ref :=문자와 그 빈도가 있는 지도
- 최대 :=0
- 단어의 각 단어에 대해 수행
- w :=단어의 글자와 빈도가 있는 지도
- l :=단어 크기
- 카운터:=0
- w의 각 k에 대해 다음을 수행합니다.
- w[k] <=ref[k]이면
- 카운터 :=카운터 + 1
- 그렇지 않으면
- 루프에서 나오다
- w[k] <=ref[k]이면
- l> 최대값이고 w의 크기가 카운터와 같으면
- 최대 :=l
- 최대 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
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