給定乙個只包括 '(',')','','[',']' 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1
:輸入:
"()"輸出: true
示例 2
:輸入:
"(){}"輸出: true
示例 3
:輸入:
"(]"輸出: false
示例 4
:輸入:
"([)]"輸出: false
示例 5
:輸入:
""輸出: true
首先根據題意我們得到演算法的輸入是:乙個字串
輸出是乙個布林型的變數判斷是否為有效的括號
首先理解下有效的括號:什麼叫做有效?
最初那麼應該成對出現,這也就得到字串的長度應該是偶數,要是奇數的話直接輸出false。但是有個特例情況那就是字串長度為0時,也是乙個有效的字串,這是個套路。uman
ok,以上情況都滿足的條件下我們怎麼操作呢????
首先我們要考慮我們用什麼資料結構呢?
用棧!!!
為何用棧這是因為最右邊的左括號接下來下乙個一定要是自己那一類右括號相匹配,這也就是後進先出,那麼用棧最合適。
什麼是最右邊的左括號一定要和自己那一類右括號相匹配?
class
solution
else
if(len%2!=
0)else
else{ //當棧非空,
//且滿足棧頂元素是temp對應的左括號時,出戰,且棧頂指標下移
if(j>
0&&temp==
')'&&stack[j-1]
=='(')if
(j>
0&&temp==
']'&&stack[j-1]
=='[')if
(j>
0&&temp==
'}'&&stack[j-1]
=='}if
(j1==j)
//若是沒做操作也就是說明,出現了不匹配
//也就是說可以跳出迴圈了
break;}
if(j==
0&&stack[j]
==' '
)else
return
false;}
}}
力扣 20 有效的括號
題目 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例1 輸入 輸出 true 示例2 輸入 輸出 true 示例3 輸入 輸出 false 示例4 輸入 輸出 false 示例5 輸入 輸出 ...
力扣 20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
有效的括號(力扣 20)
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...