1. 程式人生 > >基於棧實現括號匹配演算法

基於棧實現括號匹配演算法

括號匹配演算法在各種編輯器中使用的非常多,其實基於棧來實現是非常簡單的。程式碼如下:

/**
 * 括號匹配
 *
 * @author Dongguabai
 * @date 2018/9/12 17:26
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ParenthesisMatchingHelper {

    public static boolean mather(String str) {
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c == '(' || c == '[' || c == '{') {
                stack.push(c);
            } else {
                if (stack.isEmpty()) {
                    return false;
                }
                Character pop = stack.pop();
                if (c == ')' && pop != '(') {
                    return false;
                }
                if (c == ']' && pop != '[') {
                    return false;
                }
                if (c == '}' && pop != '{') {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}