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

Python에서 0과 1을 번갈아 사용하여 이진 문자열을 재정렬할 수 있는지 확인

<시간/>

길이가 2 이상인 이진 문자열 s가 있다고 가정합니다. 0과 1이 번갈아 나타나도록 s를 재배열할 수 있는지 확인해야 합니다.

따라서 입력이 s ="1000111"과 같으면 s에서 "1010101"을 형성할 수 있으므로 출력은 True가 됩니다.

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

  • one_count :=이진 문자열 s에서 1의 개수
  • zero_count :=이진 문자열 s의 0 개수
  • s의 크기가 짝수이면
    • one_count가 zero_count와 같으면 true를 반환하고 그렇지 않으면 false를 반환
  • |one_count - zero_count|인 경우 true를 반환합니다. 1과 동일하지 않으면 거짓

예시

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

def solve(s):
   one_count = s.count('1')
   zero_count = s.count('0')
   if len(s) % 2 == 0 :
      return (one_count == zero_count)
   return abs(one_count - zero_count) == 1
s = "1000111"
print(solve(s))

입력

"1000111"

출력

True