题目描述
问题很简单你只需要回答给定的字符串(只含有小括号)是否合法
如果合法输出"YES",否则输出"NO"(不含括号)
输入
多组输入测试
第一行输入一个整数n(1<=n<=10)
接下来n行每行都输入一个字符串(字符串长度不会超过100)
输出
输出n行代表每行的括号是否合法"YES"or"NO"
样例输入
5
((((((()))))))
()()()()())(()((
()(()((()()())())()
((())()()()())())
()()()()()(())
样例输出
YES
NO
NO
NO
YES
package com.vector.test;
import java.util.Scanner;
import java.util.Stack;
public class Main {
/**
* 括号匹配
*/
static Stack<Character> stack = new Stack<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = n; i > 0; i--) {
String s = zifu(sc.next()) ? "YES" : "NO";
System.out.println(s);
stack.clear();
}
}
public static boolean zifu(String str) {
for (int i = 0; i < str.length(); i++) {
switch (str.charAt(i)) {
case '(':
stack.push(str.charAt(i));
break;
case ')':
if (stack.isEmpty()) {
return false;
} else {
stack.pop();
}
}
}
if (!stack.isEmpty()) {
return false;
}
return true;
}
}