소문자 문자열 s가 있다고 가정합니다. 하나의 문자를 삭제한 후 모든 문자의 빈도가 동일한지 확인해야 합니다.
따라서 입력이 s ="abbc"와 같으면 b 하나를 삭제하여 각 요소의 빈도가 1인 문자열 "abc"를 얻을 수 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- occurrence :=s의 모든 문자와 빈도가 있는 지도
- s의 모든 문자가 동일한 경우
- 참 반환
- s의 각 문자에 대해 다음을 수행합니다.
- 발생[char] :=발생[char] - 1
- s의 모든 문자가 동일한 경우
- 참 반환
- 발생[char] :=발생[char] + 1
- 거짓을 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
from collections import defaultdict def allSame(occurrence): counts = list(occurrence.values()) return all(element == counts[0] for element in counts) def solve(s): occurrence = defaultdict(int) for char in s: occurrence[char] += 1 if allSame(occurrence): return True for char in s: occurrence[char] -= 1 if allSame(occurrence): return True occurrence[char] += 1 return False s = "abbc" print(solve(s))
입력
"abbc"
출력
True