力扣簡單專欄 20 有效的括號

2021-10-21 23:50:09 字數 1078 閱讀 5821

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

有效字串需滿足:

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

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

示例 1:

輸入:s = 「()」

輸出:true

示例 2:

輸入:s = 「(){}」

輸出:true

示例 3:

輸入:s = 「(]」

輸出:false

示例 4:

輸入:s = 「([)]」

輸出:false

示例 5:

輸入:s = 「」

輸出:true

1 <= s.length <= 104

s 僅由括號 『(){}』 組成

解題關鍵:

只有右括號左邊的第乙個位置存在配對的左括號才是正確的。

思路:括號匹配的題一般用棧這個結構,所以先掃瞄序列,遇到左括號就入棧,再根據情況將序列元素出棧。分析解題關鍵,首先右括號左邊的位置肯定要存在,所以遇到右括號時,首先要判定棧是否空,若棧空,則序列錯誤。其次這個位置上的括號一定是和右括號配對的,所以要檢查棧頂是否配對,若不配對,則序列也錯誤。

演算法可優化的地方:

1.序列長度為奇數一定錯誤,所以要先判定序列長度,若為奇數則返回假。

2.由於存在多種括號,所以用map容器儲存三對括號,key為右括號,value為左括號。入棧時用map容器的count函式檢測當前符號,若不為右括號則入棧,若是右括號則根據key得到value進行判定。

偽**:

class

solution

}return stk.

empty()

;}}

class

solution,,

','}

;for

(char ch:s)

else

stk.

push_back

(ch);}

return stk.

empty()

;}};

力扣 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 輸入 輸...