java - 如何检查给定数组中的括号是否平衡?
问题描述
有没有办法在不使用的情况下做到这一点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;
}
解决方案
首先从字符串中删除除"("
和之外的任何内容")"
s = s.replaceAll("[^\\(\\)]", "");
然后在一个循环中逐渐删除所有出现的"()"
.
如果这导致空字符串,则返回true
。
public static boolean check(String s) {
s = s.replaceAll("[^\\(\\)]", "");
while (s.contains("()")) {
s = s.replace("()", "");
}
return s.isEmpty();
}
推荐阅读
- python - 什么是神经网络在张量流中执行
- node.js - 通过咖啡脚本中的承诺和循环避免内存泄漏(无等待)
- java - 无需再次读取文件即可获取全局变量的值
- javascript - 为什么 array.splice() 在用于作为其副本的变量时会更改变量?
- c# - Monogame:在类中创建绘图函数
- r - 如果另一个感兴趣的变量不止一次出现,则如果存在 NA 则子集行?
- jquery - AJAX 在自定义 wp_loop 中加载更多发布按钮
- firebase - Firebase Cloud Functions 升级停机时间
- authentication - Asp core 2.2 多重认证
- c++ - 如何手动显示 CMFCToolBarComboBoxButton 子菜单?