소문자 알파벳 문자열과 다른 숫자 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