สมมติว่าเรามีสตริง s เราต้องลบอักขระซ้ำติดกันชุดแรกซ้ำๆ จนกว่าจะไม่มีอักขระซ้ำติดกันเหลือ เราต้องหาสตริงสุดท้าย
ตัวอย่าง: s = "xyyyxxz" ผลลัพธ์คือ "z" เพราะ "yyy" เป็นอักขระซ้ำติดกันชุดแรก ถูกลบได้ "xxxz" แล้ว "xxx" ถูกลบเหลือ "z"
ขั้นตอนการแก้ปัญหา
- สร้างสแต็ก
stackว่าง,i = 0 - วนลูป while
i < len(s):- ถ้า
stackไม่ว่าง และstack[-1] == s[i]:x = stack.pop()- วนลูป while
i < len(s)และx == s[i]:i += 1 i -= 1
- อื่นๆ:
stack.append(s[i]) i += 1
- ถ้า
- คืนค่า
"".join(stack)
ตัวอย่างโค้ด Python
class Solution:
def solve(self, s):
stack = []
i = 0
while i < len(s):
if 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)) # Output: z
อินพุต / เอาต์พุต
Input: "xyyyxxz"
Output: z