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