九度-1342-寻找最长合法括号序列II(25分)[解题代码] | Acm之家
假如给你一个由'('和')'组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列。
http://blog.csdn.net/u013027996/article/details/18729561
Read full article from 九度-1342-寻找最长合法括号序列II(25分)[解题代码] | Acm之家
假如给你一个由'('和')'组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列。
http://blog.csdn.net/u013027996/article/details/18729561
- public static void main(String[] args) throws Exception {
- Scanner scanner = new Scanner(System.in);
- while (scanner.hasNext()) {
- String a = scanner.next();
- char array[] = a.toCharArray();
- int num = 0;
- Stack<Character> stack = new Stack<Character>();
- for (int i = 0; i < array.length; i++) {
- if (array[i] == '(') {
- stack.push(array[i]);
- }else if (array[i] == ')' && !stack.isEmpty()){
- stack.pop();
- num += 2;
- }
- }
- System.out.println(num);
- }
- }
05 | while ( scanf ( "%s" ,s) != EOF) { |
06 | l = ans = 0; |
07 | for (i=0; s[i]; i++){ |
08 | if (s[i] == '(' ){ |
09 | l++; |
10 | } else { |
11 | if (l){ |
12 | ans += 2; |
13 | l--; |
14 | } |
15 | } |
16 | } |
17 | printf ( "%d\n" , ans); |
18 | } |