leetcode栈之有效的括号

本文主要记录一下leetcode栈之有效的括号网络

题目

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需知足:

    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

输入: "()[]{}"
输出: true

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

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

来源:力扣(LeetCode)
连接:https://leetcode-cn.com/problems/valid-parentheses
著做权归领扣网络全部。商业转载请联系官方受权,非商业转载请注明出处。

题解

class Solution {
    public boolean isValid(String s) {
        Stack<Character>stack = new Stack<Character>();
        for(char c: s.toCharArray()){
            if(c=='(')stack.push(')');
            else if(c=='[')stack.push(']');
            else if(c=='{')stack.push('}');
            else if(stack.isEmpty()||c!=stack.pop())return false;
        }
        return stack.isEmpty();
    }
}

小结

这里借助栈,而后遍历每一个char,针对([{分别push对应配对的char,其余的则判断stack是否为空或者pop出来的值是否与之相等,若是不等则返回false,若是遍历完以后,stack不为空则返回false,为空返回true。code

doc

相关文章
相关标签/搜索