数据结构-有效括号序列-java

1.题目

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

2.题解

我们遍历字符串中的所有字符
1,如果遇到了左括号,就把对应的右括号压栈(比如遇到了字符’(’,就把字符’)'压栈)。
2,如果遇到了右括号
1)查看栈是否为空,如果为空,说明不能构成有效的括号,直接返回false。
2)如果栈不为空,栈顶元素出栈,然后判断出栈的这个元素是否等于这个右括号,如果不等于,说明不匹配,直接返回false。如果匹配,就继续判断字符串的下一个字符。
3,最后如果栈为空,说明是完全匹配,是有效的括号,否则如果栈不为空,说明不完全匹配,不是有效的括号。

3.代码

public boolean isValid (String s) {
    
    
//         if(s==null||s.length()==1||s.length()%2!=0){
    
    
//             return false;
//         }
        Stack<Character> list = new Stack<>();

        for (char c:s.toCharArray()) {
    
    

            if(c=='('){
    
    
                list.push(')');
            }
            else if(c=='['){
    
    
                list.push(']');
            }
            else if(c=='{'){
    
    
                list.push('}');
            }
            else if(list.isEmpty()||c!=list.pop()){
    
    
              
                return false;
            }
        }

        return list.isEmpty();
    }

猜你喜欢

转载自blog.csdn.net/qq_25064691/article/details/121320556