括号匹配问题
import java.util.HashMap;
import java.util.Stack;
/**
* Created by changqing on 2017/9/2.
*/
public class MatchJudge {
public static void main(String[] args) {
System.out.println(Match("(***)-[{-------}]")); //true
System.out.println(Match("(2+4*a[5]")); //true
System.out.println(Match("({}[]]])")); //false
System.out.println(Match("())))")); //false
}
private static Boolean Match(String str) {
HashMap<Character,Character> map=new HashMap<>();
map.put(')','(');
map.put(']','[');
map.put('}','{');
Stack<Character> 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));
continue;
}
if (str.charAt(i) == ')' || str.charAt(i) == ']' || str.charAt(i) == '}') {
if(stack.isEmpty()){
return false;
}
if (stack.peek() == map.get(str.charAt(i))) {
stack.pop();
continue;
}
return false;
}
}
return stack.isEmpty()?true:false;
}
}