括号匹配时间限制: 1000ms内存限制: 1000kB
描述假设表达式中只包含三种括号:圆括号、方括号和花括号,它们可相互嵌套,如([{}])或({[][()]})等均为正确的格式,而{[]})}或{[()]或([]}均为不正确的格式.
输入一串括号
如果输入的右括号多余,输出:Extra right brackets
如果输入的左括号多余, 输出:Extra left brackets
如果输入的括号不匹配,输出:Brackets not match
如果输入的括号匹配,输出:Brackets match
输入{{{{)))
输出Brackets not match
样例输入{([)]}
样例输出Brackets not match
参考代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
String s = cin.readLine();
int kind = judge(s);
switch(kind){
case 0:
System.out.println("Brackets match");
break;
case 1:
System.out.println("Brackets not match");
break;
case 2:
System.out.println("Extra left brackets");
break;
case 3:
System.out.println("Extra right brackets");
break;
}
}
private static int judge(String s) {
Stack stk = new Stack();
for(int i = 0;i < s.length();++ i){
char c = s.charAt(i);
switch(c){
case '{':
case '[':
case '(':
stk.push(c);
break;
case '}':
if(stk.isEmpty()){
return 3;
}
if('{' != stk.lastElement())
return 1;
stk.pop();
break;
case ']':
if(stk.isEmpty()){
return 3;
}
if('[' != stk.lastElement())
return 1;
stk.pop();
break;
case ')':
if(stk.isEmpty()){
return 3;
}
if('(' != stk.lastElement())
return 1;
stk.pop();
break;
}
}
if(!stk.isEmpty()){
return 2;
}
return 0;
}
}
作者:binfeihan 发表于2011-10-3 21:22:05 原文链接
阅读:22 评论:0 查看评论