java中的算法来校验字符串是否规则

java中的算法来校验字符串是否规则

问题描述:

例如:String str = "[{][<<<]]";有一段不规则的字符串
如何写一个算法来验证他是不是规则的:比如"{[<>]}"这种是规则的

private static boolean test(String s) {
  Map<Character, Character> pair = new TreeMap<>();
  pair.put('[', ']'); pair.put('{', '}'); pair.put('<', '>'); pair.put('(', ')');
  Stack<Character> stack = new Stack<>();
  for (char c : s.toCharArray()) {
    if (pair.containsKey(c)) {
      stack.push(c);
    } else if (pair.containsValue(c)) {
      if (stack.isEmpty() || c != pair.get(stack.pop())) {
        return false;
      }
    }
  }
  return stack.isEmpty();
}

用栈的原理来实现校验