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

Python에서 K개의 고유 문자로 문자열을 형성하는 데 필요한 최소 기회를 찾는 프로그램

<시간/>

소문자 알파벳 문자열과 다른 숫자 k가 있다고 가정하고 결과 문자열이 최대 k개의 고유한 문자를 갖도록 문자열에서 필요한 변경의 최소 수를 찾아야 합니다. 이 경우 변경 사항은 실제로 한 캐릭터를 다른 캐릭터로 변경하는 것입니다.

따라서 입력이 s ="wxxyyzzxx", k =3과 같으면 출력은 1이 됩니다. 문자 "w"를 제거하여 3개의 고유한 문자(x, y 및 z)를 얻을 수 있기 때문입니다.

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

  • count :=s에 있는 각 문자의 맵과 빈도

  • sv :=빈도 값의 정렬된 목록

  • 답변 :=0

  • 범위 0에서 (카운트 크기) - k - 1에 있는 i에 대해 수행

    • ans :=ans + sv[i]

  • 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

from collections import Counter
class Solution:
   def solve(self, s, k):
      count = Counter(s)
      sv = sorted(count.values())
      ans = 0
      for i in range(len(count) - k):
         ans += sv[i]
      return ans

ob = Solution()
s = "wxxyyzzxx"
k = 3
print(ob.solve(s, k))

입력

"wxxyyzzxx",3

출력

1