问题: 输入一系列的括号,判断格式是否正确
这里直接用java写好的栈,栈的实现较简单,不单独手写栈了,可以用数组实现栈,也可以用链表实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| import java.util.Collection; import java.util.HashMap; import java.util.Set; import java.util.Stack;
public class BracketMatch {
/** * 用栈解决括号匹配的类似问题 * */
public boolean isMatch(String str){ char[] c = str.toCharArray(); Stack<Character> stack = new Stack<>();
HashMap<Character, Character> hashMap = new HashMap<Character, Character>(){ { put(')','('); put('}','{'); put(']','['); put('>','<'); } };
Set<Character> keySet = hashMap.keySet(); Collection<Character> vC = hashMap.values();
for(char s : c){ if(vC.contains(s)){ stack.push(s); }else if(keySet.contains(s)){ if(stack.pop() != hashMap.get(s)){ return false; } } } return stack.empty(); }
}
|
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏