判断字符串中的字符匹配,遍历字符串运用switch将“(”、” [ " 、“ { ”的时,压入push栈中,当遇到“ )”、“ ] " 、 ” } “,比较pop弹出的的括号是否相对应“(”、” [ " 、“ { ”。遍历完成发现则匹配,否则不匹配。代码如下:
package test;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public void check(String str) {
Stack<Character> stack = new Stack<Character>();
boolean flag = true;
for (int i = 0; i < str.length() && flag; i++) {
switch (str.charAt(i)) {
case '(':
case '[':
case '{':
stack.push(str.charAt(i));
break;
case ')':
if (stack.pop() != '(')
flag = false;
break;
case ']':
if (stack.pop() != '[')
flag = false;
break;
case '}':
if (stack.pop() != '{')
flag = false;
break;
}
}
if (flag && !stack.isEmpty()) {
flag = true;
}
if (flag) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
public static void main(String[] args) {
Main pm = new Main();
Scanner sin = new Scanner(System.in);
int N = sin.nextInt();
while (N-- > 0) {
String str = sin.next();
pm.check(str);
}
}
}