• 【算法】华为南研所-括号匹配


    题目

    三种括号 []{}()

    • 括号匹配规则:
    • {{()[]}} 则为true;
    • {[()}} 则为false 并打印出未匹配位置

    思路

    主要利用栈结构先进先出的特点,保存前一个待匹配的字符,跟当前字符做匹配。

    代码

    package nowcoder;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    import java.util.Stack;
    
    /**
     * 括号匹配
     */
    public class ParenthesesMatch {
    
        private static final Map<Character,Character> brackers = new HashMap<>();
    
        static {
            brackers.put(')', '(');
            brackers.put(']', '[');
            brackers.put('}', '{');
        }
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            while(scanner.hasNextLine()) {
                String str = scanner.nextLine();
                System.out.println(isMatch(str));
            }
            scanner.close();
        }
    
        private static boolean isMatch(String str) {
            if(str == null) {
                return false;
            }
            Stack<Character> stack = new Stack<>();
            for (char ch : str.toCharArray()) {
                if(brackers.containsValue(ch)) {
                    stack.push(ch);
                } else if(brackers.containsKey(ch)){
                    if(stack.isEmpty()|| stack.pop() != brackers.get(ch)) {
                        return false;
                    }
                }
            }
            return stack.empty();
        }
    }
    
  • 相关阅读:
    ASPX属性菜单ASTreeView
    MD5 encryption(Hash Algorithm)
    Asp.net的身份验证
    log4net使用
    脚本正则表达式
    C#操作注册表
    利用JQuery的.getJSON给Dropdownlist绑定Item
    查看mysql的端口号
    用SQL语句的方法还原数据库
    MYSQL 乱码 ERROR 1366
  • 原文地址:https://www.cnblogs.com/zendwang/p/huawei-interview-question-parentheses-match.html
Copyright © 2020-2023  润新知