演算法 有效的括號

2021-10-04 09:41:53 字數 1289 閱讀 7216

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

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

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

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

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

解法主要是利用到了棧的原理。**的開括號必須有相同的閉括號消除,才能消除前面的開括號,否則就是個錯誤的括號

// 兩種方法乙個意思,網友的效率應該更高點,畢竟我這種還要對字串進行處理

function

isvalid($s

)';if

($stack

->

isempty()

||$stack

->

pop()!=

'break

;case

')';if(

$stack

->

isempty()

||$stack

->

pop()!=

'(')

break

;case

']';if(

$stack

->

isempty()

||$stack

->

pop()!=

'[')

break;}

$s=substr($s

,1);

if(!$stack

->

isempty()

&&empty($s

))return

false;if

($stack

->

isempty()

)return

true;}

}function

isvalid($s

)else'&&

$stack

->

pop()!=

'}//最後 判斷棧是否為空

return

$stack

->

isempty()

;}

演算法 有效的括號

偽 1.得到字串.2.建立乙個linkedlist 用來模擬stack 2.非空判斷,空返回true 3.遍歷字串 如果第一次碰到三個括號 第乙個括號是右括號必定是錯誤的 如果碰到左括號,給linkedlist中新增對應的右括號,碰到右括號,判斷linkedlist末尾的右括號是否與其匹配,匹配則刪...

演算法 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。1 輸入 輸出 false 2 輸入 輸出 true 在最開始看到該題時是想將輸入的字串都先放入棧中,然後對棧進行操作 但是這種方法有點複雜。後邊實在...

演算法 有效的括號

有效的括號 核心思路 最左邊的右括號的,必定與不超過右括號的最右邊的左括號匹配 棧頂元素 解法一 最左邊的右括號的前乙個括號必定是相匹配的右括號 思路 1.如果長度為奇數返回false,如果左棧為空的時,出現右括號直接返回false 2.從左到右遍歷每個括號,如果是左括號就入棧,直到遇到右括號 第乙...