括号的匹配问题。即:[ ] { } ( ) < >
判断给定的括号序列是否合法。
可用“期待的急迫程度”这一概念来解决。即:先满足急迫程度最强的需求。
import java.util.Stack;
public class Test {
private static Stack<Character> s=new Stack<Character>();
public static boolean compare(char c)
{
switch(c)
{
case '(':
case '{':
case '[':
case '<':s.push(c);return true;
case ')':if(!s.isEmpty()&&s.pop().equals('(')) return true; return false;
case '}':if(!s.isEmpty()&&s.pop().equals('{')) return true; return false;
case ']':if(!s.isEmpty()&&s.pop().equals('[')) return true; return false;
case '>':if(!s.isEmpty()&&s.pop().equals('<')) return true; return false;
default: return false;
}
}
public static boolean test(String s)
{
if(s.length()%2!=0)
return false;
for(int i=0;i<s.length();i++)
{
if(!compare(s.charAt(i)))
return false;
}
return true;
}
public static void main(String[] args) {
String s="(<{[]}>)";
if(test(s))
System.out.println(true);
else
System.out.println(false);
}
}