给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列java实现

题目描述

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

思路:逐个遍历字符串,遇到'(','{','['就压入栈,遇到')','}',']'则弹出栈顶字符,判断是否合法,最后检查栈是否为空,为空则是合法括号序列。

import java.util.*;
public class Solution {
    public boolean isValid(String s) {
        if(s==null)
            return true;
        if(s.length()%2==1)
            return false;
        Stack<Character> stack=new Stack<Character>();
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)=='('||s.charAt(i)=='{'||s.charAt(i)=='['){
                stack.push(s.charAt(i));
            }
            else if(!stack.empty()&&s.charAt(i)==')'){
                if(stack.pop()!='(')
                    return false;
            }
            else if(!stack.empty()&&s.charAt(i)=='}'){
                if(stack.pop()!='{')
                    return false;
            }
            else if(!stack.empty()&&s.charAt(i)==']'){
                if(stack.pop()!='[')
                    return false;
            }
            else{
                return false;
            }
        }
        if(stack.empty()){
            return true;
        }
        else{
            return false;
        }
    }
}
发布了32 篇原创文章 · 获赞 1 · 访问量 347

猜你喜欢

转载自blog.csdn.net/zy854816286/article/details/104865199