AcWing 150. 括号画家
原题链接
简单
作者:
没有你哪有我
,
2021-12-30 20:22:35
,
所有人可见
,
阅读 199
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
char[] c = input.next().toCharArray();
int n = c.length;
Stack<Integer> stack = new Stack<>();
int res = 0;
for (int i = 0; i < n; i++) {
if (stack.size() > 0 && c[stack.peek()] == '(' && c[i] == ')') {
stack.pop();
} else if (stack.size() > 0 && c[stack.peek()] == '[' && c[i] == ']') {
stack.pop();
} else if (stack.size() > 0 && c[stack.peek()] == '{' && c[i] == '}') {
stack.pop();
} else {
// 分段
stack.push(i);
}
int r = 0;
// 计算此时的最大长度
if (stack.size() > 0) {
r = i - stack.peek();
} else {
r = i + 1;
}
// 更新最大值
if (r > res) {
res = r;
}
}
System.out.println(res);
}
}