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

Python에서 한 번의 제거로 모든 문자의 빈도가 동일해질 수 있는지 확인

<시간/>

소문자 문자열 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