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();
}
答
用栈的原理来实现校验