其他分享
首页 > 其他分享> > 括号匹配问题

括号匹配问题

作者:互联网

题目描述:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效
有效字符串需满足:
左括号必须用相同类型的右括号闭合
左括号必须以正确的顺序闭合
注意空字符串可被认为是有效字符串

示例 1:
输入: “()”
输出: true

示例 2:
输入: “{[]}”
输出: true

示例 3:
输入: “(]”
输出: false

import java.util.Stack;

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.empty()){//说明栈里没有元素
                    return false;
                }
                char topChar = stack.pop();
                if(c==')'&&topChar!='('){
                    return false;
                }
                if(c==']'&&topChar!='['){
                    return false;
                }
                if(c=='}'&&topChar!='{'){
                    return false;
                }
            }
        }
        return stack.empty();//如果此时是空斩,说明匹配都成功;如果栈里还有元素,失败
    }
}

标签:false,匹配,问题,括号,topChar,字符串,return,stack
来源: https://blog.csdn.net/Beverly_/article/details/104848145