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

파이썬에서 회문을 형성하기 위해 주어진 문자열의 문자를 재배열할 수 있는지 확인

<시간/>

문자열 s가 있다고 가정하면 주어진 문자열의 문자를 섞어 회문을 만들 수 있는지 여부를 확인해야 합니다.

따라서 입력이 s ="raaecrc"와 같으면 회문인 "racecar"로 재정렬할 수 있으므로 출력은 True가 됩니다.

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

  • freq :=s에 모든 문자와 주파수를 저장하는 맵
  • 홀수_카운트:=0
  • freq의 모든 값 목록에 있는 각 요소 i에 대해 do
    • 내가 홀수이면
      • odd_count :=odd_count + 1
    • odd_count> 1이면
      • 거짓을 반환
  • 참 반환

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

from collections import defaultdict
def solve(st) :
   freq = defaultdict(int)
   for char in st :
      freq[char] += 1
   odd_count = 0
   for i in freq.values():
      if i % 2 == 1:
         odd_count = odd_count + 1
      if odd_count > 1:
         return False
   return True
s = "raaecrc"
print(solve(s))

입력

"raaecrc"

출력

True