要求:
- 空串是一个合法的括号匹配序列
- 若X,Y都是合法匹配序列,那么XY也是
- 若X是合法匹配序列,那么(X)也是
- 每个合法括号序列都可以由以上规则生成。
思路:
- 空串的深度是0
- 如果X的深度是x,Y的深度是y,那么XY的深度是max(x,y)
- 如果X的深度是x,那么(X)的深度是x+1
- 从第一个字符开始向后遍历,碰到'(',count+1,否则count-1。用max保存,max=Math.max(max, count),max每次都保存上次循环的最大值。
示例:
输入: (())
输出:2
代码:
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int cnt = 0, max = 0, i;
for (i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
cnt++;
} else {
cnt--;
}
max = Math.max(max, cnt);
}
sc.close();
System.out.println(max);
}
}