20 有效的括號

有效的括號題解

題目描述

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

有效字符串需滿足:

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

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-parentheses

解題思路

用一個輔助棧來存儲括號,每當遍歷到的括號爲反括號的時候,將棧頂括號彈出看是否與反括號匹配,如果匹配就消除這兩個括號。不匹配則直接返回false。同時每次遍歷到反括號也要看看棧中元素是否爲空,爲空和不匹配一樣返回false

代碼實現

class Solution {
     //裝括號的棧
    Stack<Character> stack = new Stack<>();
    public boolean isValid(String s) {
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if(chars[i] == ')' && !stack.isEmpty()){
                char temp = stack.pop();
                if(temp != '('){
                    return false;
                }
            }
            else  if(chars[i] == ']' && !stack.isEmpty()){
                char temp = stack.pop();
                if(temp != '['){
                    return false;
                }
            }else  if(chars[i] == '}' && !stack.isEmpty()){
                char temp = stack.pop();
                if(temp != '{'){
                    return false;
                }
            }else {
                stack.push(chars[i]);
            }

        }
        return stack.isEmpty()? true : false;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章