Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。
Input
输入数据有多组,处理到文件结束。
Output
如果匹配就输出“yes”,不匹配输出“no”
Example Input
sin(20+10)
{[}]
Example Output
yes
no
Hint
Author
ma6174
import java.util.Scanner;
import java.util.Stack;
public class test {
private static boolean result(String str) {
Stack stack = new Stack ();
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '(' || str.charAt(i) == '[' || str.charAt(i) == '{' ) {
stack.push(str.charAt(i));
}
else if (str.charAt(i) == ')') {
if (!stack.empty() && stack.peek().toString().charAt(0) == '('){
stack.pop();
}
else{
return false;
}
}
else if (str.charAt(i) == ']') {
if (!stack.empty() && stack.peek().toString().charAt(0) == '['){
stack.pop();
}
else{
return false;
}
}
else if (str.charAt(i) == '}') {
if (!stack.empty() && stack.peek().toString().charAt(0) == '{'){
stack.pop();
}
else{
return false;
}
}
}
if (stack.empty()){
return true;
}
else{
return false;
}
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while(cin.hasNext()) {
String str = cin.nextLine();
if (result(str)) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
}