是否有某种方法可以不使用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;
}
答案 0 :(得分:0)
首先使用
从字符串中删除"("
和")"
以外的任何内容。
s = s.replaceAll("[^\\(\\)]", "");
然后在一个循环中逐渐删除所有出现的"()"
。
如果结果为空字符串,则返回true
。
public static boolean check(String s) {
s = s.replaceAll("[^\\(\\)]", "");
while (s.contains("()")) {
s = s.replace("()", "");
}
return s.isEmpty();
}