数据结构实验之栈四:括号匹配(java实现)

时间:2021-07-14 07:34:45

数据结构实验之栈四:括号匹配

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");
}
}
}
}