給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: 「()」
輸出: true
示例 2:
輸入: 「(){}」
輸出: true
示例 3:
輸入: 「(]」
輸出: false
示例 4:
輸入: 「([)]」
輸出: false
示例 5:
輸入: 「」
輸出: true
經典的括號匹配問題,其實就是遍歷字串,把左括號存放在棧裡,若是右括號則從棧裡彈出乙個元素與它進行匹配,匹配時棧為空時,說明不是有效的。由於有3種括號,可以巧妙地設定hashmap,鍵:都為右括號,值:與鍵匹配的左括號。由於括號匹配應該是一一對應的,所以最後棧應該是空的,否則就不匹配。
class solution ','
public boolean isvalid(string s)
}else
}return stack.isempty();
//只要一一匹配,也就是對棧來說是進多少出多少。迴圈後棧肯定為空
}}
leetcode刷題(51) 22 括號生成
給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 思路 只要有左括號就可以新增 class solution public void helper int left,int right,string str if left 0 ...
Leetcode刷題 有效的括號
思路 先把符號輸入字典,每對符號的左半邊設定為位置,右半邊設定為值,方便後續進行比對。利用出入棧的思想,設定棧stack,將字串中的值cpush入棧直至c不在字典裡。然後再將棧裡的值pop出來與c對比,注意此時pop出來的值是字典的位置索引dic stack.pop 所對應的值應該是符號的右半邊。如...
leetcode刷題(30) 20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...