• 括号匹配


    编写一个程序,用以判断字符串中的括号是否匹配。

    所谓的匹配,是指左右括号必须相互呼应(同种类型),可以嵌套,但不能交叉。

    思想:

      遇到左括号时,进栈;

      遇到右括号时,判断栈是否为空,1)若栈为空,则直接返回false;

                        2)若栈不为空,判断栈顶元素是否与之匹配:2.1)若栈顶元素不匹配,返回false; 2.2)若栈顶元素与之匹配,移除栈顶元素;

      结束循环时,判断栈是否为空;若栈非空,则证明还有左括号并没有匹配。

    实现代码:

    import java.util.ArrayDeque;
    import java.util.Deque;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            String str = "";
            str = in.nextLine();
            boolean ans = check(str);
            System.out.print(ans);
            
        }
         public static boolean check(String str) {
             Map<Character, Character> map = new HashMap<>();
             map.put(')', '(');
             map.put(']', '[');
             map.put('}', '{');
             Deque<Character> deque = new ArrayDeque<>();
             int len = str.length();
             for(int i = 0; i < len; i++) {
                 char c = str.charAt(i);
                 if(map.containsValue(c)) {
                     deque.push(c);
                 }else if(map.containsKey(c)) {
                     if(deque.isEmpty()) {
                         return false;
                     }
                     if(deque.peek() == map.get(c)) {
                         deque.pop();
                     }else {
                         return false;
                     }
                 }
             }
             return deque.isEmpty()?true:false;
         }    
    }

      

  • 相关阅读:
    golang html/template template.ParseFiles(filenames) 相对路径问题
    深入理解jvm jdk1,7(19)
    深入理解jvm jdk1,7(18)
    深入理解jvm jdk1,7(17)
    深入理解jvm jdk1,7(16)
    深入理解jvm jdk1,7(15)
    深入理解jvm jdk1,7(14)
    hugo 制作个人博客总结
    后台管理系统总结
    pageHelper(分页插件的使用)
  • 原文地址:https://www.cnblogs.com/WakingShaw/p/13234702.html
Copyright © 2020-2023  润新知