zoukankan      html  css  js  c++  java
  • 括号匹配

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

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

    思想:

      遇到左括号时,进栈;

      遇到右括号时,判断栈是否为空,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;
         }    
    }

      

  • 相关阅读:
    页面存在多个setInterval
    ios 常见兼容问题
    微信开发常用代码
    jq右侧划出
    常用 css rem 根字体
    weinre使用教程
    CSS属性大全
    微信H5页面前端开发,大多数人都会遇到的几个兼容性坑
    后台管理系统页面欣赏
    微信公众号开发文档
  • 原文地址:https://www.cnblogs.com/WakingShaw/p/13234702.html
Copyright © 2011-2022 走看看