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

Python에서 특수 회문을 형성하기 위해 문자열을 재배열할 수 있는지 확인

<시간/>

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

따라서 입력이 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이면
      • 거짓을 반환
  • 참 반환

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

예시

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