首页 > 解决方案 > 如何检查给定数组中的括号是否平衡?

问题描述

有没有办法在不使用的情况下做到这一点Stack

() 应该返回 TRUE(平衡)

(()应该返回 FALSE(不平衡)

public static boolean check(String s) {
int counter = 0;
for (int i = 0; i < s.length(); i++) {
    if (s.charAt(i) == '(') {
        counter++;
    } else if (s.charAt(i) == ')') {
        if (counter == 0) {
            return false;
        }
        counter--;
    }
}
return counter == 0;
}

标签: java

解决方案


首先从字符串中删除除"("和之外的任何内容")"

s = s.replaceAll("[^\\(\\)]", "");

然后在一个循环中逐渐删除所有出现的"()".
如果这导致空字符串,则返回true

public static boolean check(String s) {
    s = s.replaceAll("[^\\(\\)]", "");
    while (s.contains("()")) {
        s = s.replace("()", "");
    }
    return s.isEmpty();
}

推荐阅读