leetcode_棧的應用(括號匹配)
阿新 • • 發佈:2018-11-10
20. 有效的括號
給定一個只包括
'('
,')'
,'{'
,'}'
,'['
,']'
的字串,判斷字串是否有效。有效字串需滿足:
- 左括號必須用相同型別的右括號閉合。
- 左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
思路:通過棧來記錄最需要匹配的元素 ,棧頂元素反映了在巢狀的層次關係中,最近的需要匹配的元素.
class Solution { public boolean isValid(String s) { //通過棧來記錄,棧頂元素為最需匹配的元素 Stack<Character> stack = new Stack(); for (int i=0; i<s.length(); i++){ char c = s.charAt(i); if(c == '{' || c=='[' || c=='(' ){ stack.push(c); }else{ if(stack.isEmpty()){ return false; } char topChar = stack.pop(); if(c=='}' && topChar!='{' ){ return false; } if(c==']' && topChar!='['){ return false; } if(c==')' && topChar!='('){ return false; } } } return stack.isEmpty(); //匹配完全後,棧內一定為空 } }