Parentheses Balance
Parentheses Balance |
You are given a string consisting of parentheses () and []. A string of this type is said to be correct:
-
(a)
- if it is the empty string (b)
- if A and B are correct, AB is correct, (c)
- if A is correct, (A ) and [A ] is correct.
Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.
Input
The file contains a positive integer n and a sequence of n strings of parentheses () and [], one string a line.Output
A sequence of Yes or No on the output file.Sample Input
3 ([]) (([()]))) ([()[]()])()
Sample Output
Yes No Yes
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package one;
import java.util.Scanner;
import java.util.Stack;
/**
*
* @author Administrator
*/
public class a673 {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
in.nextLine();
for (int i = 0; i < a; i++) {
String b = in.nextLine();
if (print(b) == true) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
public static boolean print(String s) {
Stack<Character> ss = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(') {
ss.push('(');
}
if (c == '[') {
ss.push('[');
}
if (c == ')'&& !ss.isEmpty()) {
if (ss.pop() == '(' ) {
continue;
} else {
return false;
}
}
if (c == ']'&& !ss.isEmpty()) {
if (ss.pop() == '[' ) {
continue;
} else {
return false;
}
}
if (c == ')' || c == ']') {
if (ss.size() == 0) {
return false;
}
if (ss.pop() != c) {
return false;
}
}
}
if (!ss.isEmpty()) {
return false;
}
return true;
}
}