題目:
給定乙個只包括 '(','
)','
','[
',']
'的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1
:輸入: "()
"輸出:
true
示例 2
:輸入:
"(){}
"輸出:
true
示例 3
:輸入: "(]
"輸出:
false
示例 4
:輸入:
"([)]
"輸出:
false
示例 5
:輸入: ""
輸出:
true
解題思路:
用兩個棧即可實現。
stackleft;
stackright;
將所有括號依次壓入left棧中,
1.如果發現left棧頂為右括號,則將其壓入右棧。
2.如果發現left棧頂為左括號,則檢視left與right棧頂的括號是否匹配,如果匹配,則匹配的括號同時出棧,繼續步驟1,否則則認為該字串非法。
**實現:
classsolution
while(!left.empty())')
else
char l =left.top();
char r =right.top();
if((l == '
(' && r == '
)')||(l == '
[' && r == '
]')||(l == ''))
else}}
if(!right.empty())
return
true
; }
};
有效的括號(簡單)
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
演算法 有效的括號
偽 1.得到字串.2.建立乙個linkedlist 用來模擬stack 2.非空判斷,空返回true 3.遍歷字串 如果第一次碰到三個括號 第乙個括號是右括號必定是錯誤的 如果碰到左括號,給linkedlist中新增對應的右括號,碰到右括號,判斷linkedlist末尾的右括號是否與其匹配,匹配則刪...
演算法 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。1 輸入 輸出 false 2 輸入 輸出 true 在最開始看到該題時是想將輸入的字串都先放入棧中,然後對棧進行操作 但是這種方法有點複雜。後邊實在...