gpt4 book ai didi

java - 找到第一个外括号

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:54 26 4
gpt4 key购买 nike

我需要找出第一个最外层(未嵌套)的括号索引。

例如

[]                         output: 0, 1
1[2] output: 1, 3
3[a2[c]]2[abc]3[cd] output: 1, 7

我可以通过很多条件找到它,当前代码:

public static void main(String[] args) {
String input = "3[a2[c]]2[abc]3[cd]ef";
int first = 0;
int second = 0;

int count = 0;
boolean found = false;
for (int index = 0; index < input.length(); index++) {
if (input.charAt(index) == '[') {
count++;
if (found == false) {
found = true;
first = index;
}
} else if (input.charAt(index) == ']') {
count--;
if (found && count == 0) {
second = index;
break;
}
}
}

System.out.println(first);
System.out.println(second);
}

有没有更干净的方式来做到这一点?

最佳答案

使用 Stack 可能更优雅:

String input = "3[a2[c]]2[abc]3[cd]ef";
Stack<Integer> stack = new Stack<> ();
int first = -1;
int second = -1;

for (int index = 0; index < input.length(); index++) {
if (input.charAt(index) == '[') {
stack.push(index);
} else if (input.charAt(index) == ']' && !stack.isEmpty ()) {
first = stack.pop ();
if (stack.isEmpty ()) {
second = index;
break;
}
}
}

if (first >= 0 && second >= 0) {
System.out.println(first);
System.out.println(second);
} else {
System.out.println ("not found");
}

关于java - 找到第一个外括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50199640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com