Giả sử chúng ta có một chuỗi s bao gồm dấu ngoặc đơn "(" và ")". Chúng ta phải kiểm tra xem các dấu ngoặc đơn có cân đối hay không.
Vì vậy, nếu đầu vào là s ="(() ()) (())", thì đầu ra sẽ là True
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- num_open:=0
- đối với mỗi ký tự c trong s, thực hiện
- nếu c giống với ')', thì
- nếu num_open <0, thì
- num_open:=num_open - 1
- nếu không,
- trả về Sai
- nếu không,
- num_open:=num_open + 1
- nếu num_open <0, thì
- nếu c giống với ')', thì
- trả về nghịch đảo của num_open
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): num_open = 0 for c in s: if c == ')': if num_open < 0: num_open -= 1 else: return False else: num_open += 1 return not num_open ob = Solution() print(ob.solve("(()())(())"))
Đầu vào
"(()())(())"
Đầu ra
False