括号序列

题目:

 

 

思路:

这从该题观察可以的得出需要 一 一 对应匹配且({)}这种是不符合的,所以根据栈的先进后出的方式,凡是碰到一个左边的括号就自动将右边的括号放进一个栈内,等碰到不是左边的括号的时候就进行比对,看两个右边的括号是否相等,如果不等则顺序不符合,且到了最后顺便检查一下栈是否用空了,没有用空就是左括号比右括号多,不符合条件。

代码示例:

import java.util.Stack;
 
public class Solution {
    public static void main(String[] args) {
        String s = "()(()()";
        System.out.println(isValid(s));
    }
 
    /**
     * @param s string字符串
     * @return bool布尔型
     */
    public static 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() || stack.pop() != c)
                return false;
        }
        return stack.isEmpty();
    }
}
posted @ 2020-12-10 17:07  忧愁的chafry  阅读(56)  评论(0编辑  收藏  举报