合法括号的判断 -- 牛客网(有效的括号)

题目描述:

对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。

给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。

题目解析:

当我们看到这种括号匹配的问题,第一反应则是使用栈,使用这个思路,本题就会简单很多。

解题思路

1.先判断栈是否为空,为空则直接返回false;

2.再判断输入的字符串,如果为“(‘则直接入栈;

3.这个时候我们就要判断括号是否合法了,如果碰到”  )“ ,则直接弹出栈顶元素”(  “,如果此时栈为空,则直接返回false;

4.碰到除”  )“以外的内容则直接返回false;

5.字符串结尾时,栈非空,则返回false;

代码如下:


import java.util.Stack;

/**
 * 合法括号序列判断
 */
public class Work2 {
    public boolean chkParenthesis(String A, int n) {
        Stack stack = new Stack();
        if (A == null || A.length() != n){
            return false;
        }
        for (int i = 0; i < n ; i++) {
            if(A.charAt(i) == '('){
                stack.push(A.charAt(i));
            }else if (A.charAt(i) == ')'){
                if (stack.empty()){
                    return false;
                }else {
                    stack.pop();
                }
            }else {
                return false;
            }
        }
        if (!stack.empty()){
            return false;
        }else {
            return true;
        }
    }

}

测试:

 public static void main(String[] args) {

        Work2 work2 = new Work2();
        System.out.println(work2.chkParenthesis("()()",4));

    }

结果:

合法括号的判断 -- 牛客网(有效的括号)_第1张图片

你可能感兴趣的:(牛客andLeetcode)