zoukankan      html  css  js  c++  java
  • 面试题之:括号是否匹配

    1、写一个函数,判断括号是不是匹配,括号有三种 可以嵌套, [](()){}

    2、给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
         有效字符串需满足:
            左括号必须用相同类型的右括号闭合。
            左括号必须以正确的顺序闭合。
            注意空字符串可被认为是有效字符串。
            
            示例 1:
            输入: “{[]}”
            输出: true
     
            示例 2:
            输入: “([)]”
            输出: false
     
    代码如下:
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            .result{
                margin-top: 30px;
                padding: 20px 10px;
                border: 1px solid #999;
                background-color: beige
            }
        </style>
    </head>
    <body>
       <p>
           1、写一个函数,判断括号是不是匹配,括号有三种 可以嵌套, [](()){}<br/>
            
            2、给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
    
            <p>有效字符串需满足:</p>
            
            左括号必须用相同类型的右括号闭合。<br/>
            左括号必须以正确的顺序闭合。<br/>
            注意空字符串可被认为是有效字符串。<br/>
            
            示例 1:<br/>
            
            输入: “([)]”<br/>
            输出: false<br/>
    
            示例 2:<br/>
            输入: “{[]}()”<br/>
            输出: true
        </p>
    
        <input type="text" id="input" placeholder="请输入" />
        <button onclick="set()">开始匹配</button>
        <div class="result">
            结果:<div id="result"></div>
        </div>
    
    </body>
    <script>
        const moduleJson = { // 需要匹配的模板
            ')': '(',
            '}': '{',
            ']': '['
        }
    
        let result = document.getElementById('result') // 结果显示
    
        function set(){
            let str = document.getElementById('input').value
            if(!str){
                alert('请输入!')
            }
            this.match(str)
        }
        
        function match(str){
            let tempSaveArray = [] // 栈   // 用户存储数据
            let len = str.length // length  可以用于返回字符串 / 数组 的长度
            
            // 入栈
            for(let i = 0; i< str.length; i++){  
                for(let key in moduleJson){
                    if(str[i] == key || str[i] == moduleJson[key]){  // 如果是括号,就入栈
                        tempSaveArray.push(str[i])
                    }
                }
            }
        
            // 判断栈的长度  
            if(tempSaveArray.length){
                if((tempSaveArray.length % 2) != 0){ //为奇数,肯定不匹配
                    result.innerText = '不匹配!'
                }else{
                    for(let j = 0; j < tempSaveArray.length; j++){
                        if(moduleJson[tempSaveArray[j]]){ // 如果是括号,就和前一个匹配
                            if(j > 0){ // 不能为第一个
                                if(moduleJson[tempSaveArray[j]] == tempSaveArray[j-1]){ // 与前一个元素匹配
                                    tempSaveArray.splice(j-1, 2) //出栈  splice(index, howmany, item)
                                    j = 0 // 重新遍历数组
                                }
                            }
                        }
                    }
    
                    // 判断栈中是否还有数据
                    if(tempSaveArray.length){
                        result.innerText = 'false'
                    }else{
                        result.innerText = 'true'
                    }
                }
            }else{
                result.innerText = '输入的字符串中不包含需要匹配的括号!'
            }
        }
    </script>
    </html>            
  • 相关阅读:
    leetcode701. Insert into a Binary Search Tree
    leetcode 958. Check Completeness of a Binary Tree 判断是否是完全二叉树 、222. Count Complete Tree Nodes
    leetcode 110. Balanced Binary Tree
    leetcode 104. Maximum Depth of Binary Tree 111. Minimum Depth of Binary Tree
    二叉树
    leetcode 124. Binary Tree Maximum Path Sum 、543. Diameter of Binary Tree(直径)
    5. Longest Palindromic Substring
    128. Longest Consecutive Sequence
    Mac OS下Android Studio的Java not found问题,androidfound
    安卓 AsyncHttpClient
  • 原文地址:https://www.cnblogs.com/bala/p/11677518.html
Copyright © 2011-2022 走看看