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

Python에서 문자열의 아나그램이 회문인지 확인하십시오.

<시간/>

문자열 s가 있다고 가정합니다. 해당 문자열의 아나그램이 회문을 형성하는지 여부를 확인해야 합니다.

따라서 입력이 s ="aarcrec"과 같으면 출력은 True가 됩니다. 이 문자열의 하나의 아나그램은 회문인 "racecar"입니다.

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

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

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

예시

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

입력

"aarcrec"

출력

True