LeetCode演算法題(六) 有效的括號

2021-10-02 20:19:05 字數 1800 閱讀 9687

描述:

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

有效字串需滿足:

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

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

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

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

審題:我們注意到這個題有兩個基本規律,一是括號單獨成對,如(){} , 而是括號包裹括號,如() ,只有符合這兩個條件的才是正確的字串。單獨成對很好判斷,所以現在的問題就是如何判斷包裹型的了。有兩種方法,從外面向裡面 以及 從裡面向外面,毫無疑問第二種肯定是正確的,因為正確的字串最裡面一對括號肯定是匹配的,然後向外遞推。那麼從外面向裡面呢?說行也行,說不行也不行,取決與如何去判斷,如(} 。

解法一:stack

class

solution

stack

str =

newstack

<

>()

;for

(int i =

0; i < s.

length()

; i++

)else

catch

(exception e)

if(s.

charat

(i)!=

getmatching

(p))}}

if(str.

empty()

)return

false;}

// 這裡可以更換成hashmap

public

char

getmatching

(char c)';

case

'[':

return

']';

}return

'n';

}}

官方動畫如下

Rrui的Leetcode演算法刷題筆記(六)

注 本頁有大量的鎖定題,由於本人非常窮,所以本頁的題非常少。268.missing number class solution 注 簡單題,如果數字存在的話則對應下標的那個數標為負數,特殊情況是0,需要特殊考慮。faster than 51.79 273.integer to english wor...

LeetCode初級題 有效的括號

有效的括號 題目要求 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 fals...

Leetcode刷題 有效的括號

思路 先把符號輸入字典,每對符號的左半邊設定為位置,右半邊設定為值,方便後續進行比對。利用出入棧的思想,設定棧stack,將字串中的值cpush入棧直至c不在字典裡。然後再將棧裡的值pop出來與c對比,注意此時pop出來的值是字典的位置索引dic stack.pop 所對應的值應該是符號的右半邊。如...