Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 주어진 문자를 사용하여 만들 수 있는 가장 긴 것의 길이를 찾는 프로그램

<시간/>

단어라는 문자열 목록과 문자라는 또 다른 문자열이 있다고 가정하면 문자의 문자로 구성될 수 있는 단어에서 가장 긴 문자열의 길이를 찾아야 합니다. 단어를 만들 수 없으면 0을 반환합니다. 여기서 문자를 재사용할 수 없습니다.

따라서 입력이 단어 =["개", "고양이", "쥐", "토끼", "사자", "박쥐"], 문자 ="gabctnyu"와 같은 경우 출력은 3이 됩니다. 단어 "cat" 또는 "bat"를 만들 수 있으므로 최대 길이는 3입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • ref :=문자와 그 빈도가 있는 지도
  • 최대 :=0
  • 단어의 각 단어에 대해 수행
    • w :=단어의 글자와 빈도가 있는 지도
    • l :=단어 크기
    • 카운터:=0
    • w의 각 k에 대해 다음을 수행합니다.
      • w[k] <=ref[k]이면
        • 카운터 :=카운터 + 1
      • 그렇지 않으면
        • 루프에서 나오다
    • 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