用栈解决括号匹配问题

问题: 输入一系列的括号,判断格式是否正确

这里直接用java写好的栈,栈的实现较简单,不单独手写栈了,可以用数组实现栈,也可以用链表实现

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 stack = new Stack<>();

        HashMap hashMap = new HashMap(){
            {
                put(')','(');
                put('}','{');
                put(']','[');
                put('>','<');
            }
        };

        Set keySet = hashMap.keySet();
        Collection 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();
    }

}

你可能感兴趣的:(栈,数据结构)