Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm chuỗi sau khi loại bỏ các ký tự trùng lặp liên tiếp trong Python

Giả sử chúng ta có một chuỗi s, chúng ta xóa nhiều lần các ký tự trùng lặp liên tiếp đầu tiên. Chúng ta phải tìm chuỗi cuối cùng.

Vì vậy, nếu đầu vào là s =​​"xyyyxxz", thì đầu ra sẽ là "z", vì "yyy" là các ký tự trùng lặp liên tiếp đầu tiên sẽ bị xóa. Vì vậy, chúng tôi có "xxxz". Sau đó, "xxx" sẽ bị xóa để kết thúc bằng "z".

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ngăn xếp:=một ngăn xếp mới
  • i:=0
  • while i
  • nếu ngăn xếp không trống và đỉnh của ngăn xếp giống với s [i], thì
    • x:=xóa phần tử cuối cùng khỏi ngăn xếp
    • while i
    • i:=i + 1
  • i:=i - 1
  • nếu không,
    • đẩy s [i] vào ngăn xếp
  • i:=i + 1
  • quay lại sau khi kết hợp các phần tử ngăn xếp
  • Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    Ví dụ

    class Solution:
       def solve(self, s):
          stack = []
          i = 0
          while i < len(s):
             if len(stack) and stack[-1] == s[i]:
                x = stack.pop()
                while i < len(s) and x == s[i]:
                   i += 1
                i -= 1
                else:
                   stack.append(s[i])
                i += 1
          return "".join(stack)
    ob = Solution()
    s = "xyyyxxz"
    print(ob.solve(s))

    Đầu vào

    "xyyyxxz"

    Đầu ra

    z