LeetCode #20. 有效的括號

https://leetcode-cn.com/problems/valid-parentheses/description/

解:用一個棧來存儲沒匹配的括號

每當遇到一種右括號,就判斷棧頂括號是否能和該括號匹配,能就出棧並繼續判斷下一個字符,不能就返回false

在匹配過程中要注意棧可能已空(沒有左括號)的情況,例如:1.整個字符串只有右括號;2.整個字符串只有左括號

最後只有當棧爲空的情況纔是所有括號都匹配成功的情況(true)

這種題只要注意細節就好了!!!

import java.util.Stack;

class Solution {
    public boolean isValid(String s) {

        Stack<Character> st = new Stack<Character>();
        for(int i = 0;i < s.length();i++) {
            if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{')
                st.push(s.charAt(i));
            else if(s.charAt(i) == ')' && (st.empty() || st.peek() != '('))
                return false;
            else if(s.charAt(i) == ']' && (st.empty() || st.peek() != '['))
                return false;
            else if(s.charAt(i) == '}' && (st.empty() || st.peek() != '{'))
                return false;
            else st.pop();
        }
        if(st.empty())
            return true;
        else return false;
    }
}

發佈了135 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章