문자열 s가 있다고 가정합니다. 해당 문자열의 아나그램이 회문을 형성하는지 여부를 확인해야 합니다.
따라서 입력이 s ="aarcrec"과 같으면 출력은 True가 됩니다. 이 문자열의 하나의 아나그램은 회문인 "racecar"입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- freq :=모든 문자와 주파수를 저장하는 맵
- 홀수_카운트:=0
- freq의 모든 값 목록에 있는 각 f에 대해 do
- f가 홀수이면
- odd_count :=odd_count + 1
- f가 홀수이면
- 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