簡單演算法 48 有效的括號

2022-08-01 07:06:12 字數 1032 閱讀 6402

題目:

給定乙個只包括 '

(','

)','

','[

',']

'的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

示例 1

:輸入: "()

"輸出:

true

示例 2

:輸入:

"(){}

"輸出:

true

示例 3

:輸入: "(]

"輸出:

false

示例 4

:輸入:

"([)]

"輸出:

false

示例 5

:輸入: ""

輸出:

true

解題思路:

用兩個棧即可實現。

stackleft;

stackright;

將所有括號依次壓入left棧中,

1.如果發現left棧頂為右括號,則將其壓入右棧。

2.如果發現left棧頂為左括號,則檢視left與right棧頂的括號是否匹配,如果匹配,則匹配的括號同時出棧,繼續步驟1,否則則認為該字串非法。

**實現:

class

solution

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 在最開始看到該題時是想將輸入的字串都先放入棧中,然後對棧進行操作 但是這種方法有點複雜。後邊實在...