栈实现括号匹配——Java

题目:

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

实现

import java.util.Stack;//java自带栈类
class Solution {
    public boolean isValid(String s){
        Stack<Character> stack=new Stack<>();//使用java的Stack类
        for(int i=0;i<s.length();i++) {//*字符串.length()方法求长度
            char c = s.charAt(i);//*字符串.charAt(index)。取出字符串中的第i个字符。
            if (c == '(' || c == '{' || c == '[') {
                stack.push(c);
            } 
            else if (c == ')' || c == ']' || c == '}') {
                if (stack.isEmpty())
                    return false;
                //若栈为空,无法访问
                char topChar=stack.pop();
                if ((topChar == '[' && c == ']') || (topChar == '(' && c == ')') || (topChar == '{') && c == '}')
                    continue;
                //如果此次匹配成功一对,进行下次匹配。continue跳过本次,break结束循环。
                else
                    return false;
                //此次匹配一对失败,则匹配失败
            }
        }
        return stack.isEmpty();//**匹配完成后栈必须为空。容易被忽略。
    }
}
发布了14 篇原创文章 · 获赞 0 · 访问量 299

猜你喜欢

转载自blog.csdn.net/zmx1952822326/article/details/104114923