描述:
給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 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 所對應的值應該是符號的右半邊。如...