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

Python에서 인접한 다른 비트를 제거한 후 가장 짧은 문자열을 찾는 프로그램

<시간/>

이진 문자열 s가 있다고 가정하고 서로 다른 두 개의 인접한 문자를 삭제할 수 있습니다. 마지막으로 이 작업을 원하는 만큼 수행할 수 있는 경우 얻을 수 있는 가장 작은 문자열의 길이를 찾아야 합니다.

따라서 입력이 s ="1100011"과 같으면 출력은 1이 됩니다. "10"을 삭제하면 "10011"이 표시되고 다시 "10"이 삭제되고 "011"이 되고 "01"이 삭제됩니다. ", 1이 남습니다.

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

  • 스택 :=새 목록
  • s의 각 c에 대해
    • 스택이 비어 있거나 스택의 맨 위가 c와 같으면
      • c를 스택에 푸시
    • 그렇지 않으면 스택의 맨 위가 c와 같지 않으면
      • 스택에서 요소 팝
  • 스택의 요소 수 반환

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

예시

class Solution:
   def solve(self, s):
      stack = []
      for c in s:
         if not stack or stack[-1] == c:
            stack.append(c)
         elif stack[-1] != c:
            stack.pop()
      return len(stack)
ob = Solution() print(ob.solve("1100011"))

입력

"1100011"

출력

1