LeetCode 6.判斷字符串中的括號是否對稱


題目描述

題目難度:簡單

給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。

有效字符串需滿足:

左括號必須用相同類型的右括號閉合。
左括號必須以正確的順序閉合。
注意空字符串可被認為是有效字符串。

示例 1:

輸入: "()"
輸出: true


示例 2:

輸入: "()[]{}"
輸出: true
示例 3:

 

輸入: "(]"
輸出: false


示例 4:

輸入: "([)]"

輸出: false


示例 5:

輸入: "{[]}"
輸出: true

 

解題思路

對於一個字符串,先toCharArray()把它轉化成char類型的數組

再使用一個棧來操作;

遍歷char數組,對於每一個char有以下情況

(1)假如stack的size為0,則表示之前遍歷過的char都能剛好配對,此時如果數組中還有沒有遍歷的,則直接將其push進stack,繼續往下遍歷;

(2)假如stack的size不為0,且棧頂的元素和當前遍歷到的元素剛好符合“{”“}”或“(”“)”或“[”“]”,則表示當前配對,此時就將棧頂的元素pop出來,繼續往下遍歷;

(3)假如stack的size不為0,且沒有滿足第二種情況,則直接將其push進stack,繼續往下遍歷;

當遍歷完整個數組后,如果stack的size剛好為0,則證明是配對的;如果不為0,則當然不配對啦。

 

 

 

 

 

代碼如下

class Solution { public boolean isValid(String s) { Stack<Character> stack=new Stack<>(); char[] chars=s.toCharArray(); for(char aChar:chars){ if(stack.size()==0){ stack.push(aChar); }else if(isSym(stack.peek(),aChar)){ stack.pop(); }else{ stack.push(aChar); } } return stack.size()==0; } private boolean isSym(char c1, char c2) { return (c1 == '(' && c2 == ')') || (c1 == '[' && c2 == ']') || (c1 == '{' && c2 == '}'); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM