문자열이 있다고 가정합니다. 주어진 문자열의 문자를 섞어 회문을 만들 수 있는지 여부를 확인해야 합니다.
따라서 입력이 s ="aarcrce"와 같으면 문자를 섞어 회문인 "racecar"를 형성할 수 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 크기 :=256
- freq :=크기가 256이고 0으로 채워지는 배열
- 0에서 s 크기의 범위에 있는 i에 대해 다음을 수행합니다.
- 주파수 배열에서 문자 s[i]의 빈도를 1씩 증가
- 홀수_카운트:=0
- 0~크기 범위의 i에 대해
- freq[i]가 id이면
- odd_count :=odd_count + 1
- odd_count> 1이면
- 거짓을 반환
- freq[i]가 id이면
- 참 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
size = 256 def solve(s) : freq = [0] * size for i in range( 0, len(s)) : freq[ord(s[i])] = freq[ord(s[i])] + 1 odd_count = 0 for i in range(0, size) : if freq[i] % 2 == 1 : odd_count = odd_count + 1 if odd_count > 1: return False return True s = "aarcrce" print(solve(s))
입력
"aarcrce"
출력
True