场景:给出一段字符串:fun(a();b(a(),c(a()))),输出每一对括号的位置。
Hi ~ 小老弟开始转公众号啦,欢迎大家来指点迷津呀
解决:栈 Stack,特点就是先进后出(FILO,First In Last Out)
public void test(String text) {
if (null == text || "".equals(text) || !text.contains("(") || !text.contains(")")) {
System.out.println("请输入正确的字符串!");
return;
}
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
if ('(' == c) {
stack.push(i);
}
if (')' == c) {
if (stack.empty()) {
System.out.println("不是左括号开头,语法错误,自动退出...");
break;
}
System.out.println("左括号下标:" + stack.pop() + ", 右括号下标:" + i);
}
}
if (!stack.isEmpty()) {
System.out.println("找不到剩余右括号,语法错误!");
}
}
输出结果:
呀,又是一段平平无奇的瞎搞。