給定一個字符串 {xxx[xxx{xxx}]xx{x[xxx]xxx{xxx}xx}x} 判斷其中的 {} 是否成對出現python
答題思路:app
使用堆棧進行解決
咱們首先壓棧一個左括號,當何時檢測到與之對應的右括號出現時彈棧,基於這樣的解題思路咱們來看下具體怎麼實現ide
class Stack: '''定義一個數據列表用來數據傳輸下標_標示不被外界訪問''' def __init__(self): self._data = [] def push(self, item): self._data.append(item) def pop(self): return self._data.pop() def get_size(self): if len(self._data) == 0: return True else: return len(self._data) def push_data(self): data1 = self._data return data1
c建立一個測試類學習
''' 遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:531509025 尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書! ''' class Test_Stack: def setup(self): self.stack = Stack() '''建立一個方法傳入data而後進行成對的壓棧和出棧''' def match(self, data): for c in data: if c in "{([": self.stack.push(c) elif c in "})]": """處理Stack中的_data無數據的狀況""" try: self.stack.pop() except Exception as e: print(e) return False return self.stack.get_size() def test_match(self): test_data = "{xxxxx[dddddddd(xxxxx{ddddd}dfsfe)dfsefe]xxxx}}}" return self.match(test_data) == True t=Test_Stack() t.setup() print(t.test_match())