6、括号匹配问题
检验符号是否匹配. ‘[‘和’]’, '(‘和’)'成对出现时字符串合法. 例如"[]", "[[(()[])]]"是合法的; “([(])”, "[())"是不合法的.请你利用栈来解决括号的匹配问题。提示,可以使用Java库提供的栈对象进行编程。
输入:
标准输入,输入的第一行为一个正整数,表示输入行的数目N,接下来的N行每行为由括号字符组成的字符串,每行字符串的长度不超过100。
输出:
标准输出,使用N行输出输入的每行字符串是否为合法,如果合法输出“true”,否则输出“false”。
import java.util.Scanner;
import java.util.Stack;
class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
while (n-- > 0) {
String s = sc.nextLine();
Stack<Character> q = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (!q.isEmpty() && ((s.charAt(i) == ')' && q.peek().equals('('))
|| (s.charAt(i) == ']' && q.peek().equals('[')))) {
q.pop();
} else {
q.push(s.charAt(i));
}
}
System.out.println(q.isEmpty());
}
}
}

浙公网安备 33010602011771号