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

Python에서 연속적인 동일한 비트를 제거하는 연산을 계산하는 프로그램

<시간/>

이진 문자열 s가 있다고 가정하고 이제 비트를 선택하고 그 값을 0에서 1로 또는 그 반대로 뒤집는 작업을 고려해 보겠습니다. 3개의 동일한 연속 비트가 없는 문자열을 얻는 데 필요한 최소 연산 수를 찾아야 합니다.

따라서 입력이 s ="10011100"과 같으면 출력은 1이 됩니다. 인덱스 4에서 비트를 1에서 0으로 바꿔 문자열 "10010100"을 세 개의 연속적인 동일한 비트가 없도록 할 수 있기 때문입니다.

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

  • l :=0, 개수 :=0
  • l
  • r :=l
  • r
  • r :=r + 1
  • count :=개수 + ((r - l) / 3)의 바닥
  • l :=r
  • 반환 횟수
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    def solve(s):
       l = 0
       count = 0
       while l < len(s):
          r = l
          while r < len(s) and s[r] == s[l]:
             r += 1
          count += (r - l) // 3
          l = r
       return count
    
    s = "10011100"
    print(solve(s))

    입력

    "10011100"
    

    출력

    1