使用js有效括号匹配封装函数

点击查看代码
function isValidParentheses(str) {
    // 定义一个栈,用于存储待匹配的左括号
    let stack = [];
    // 定义一个对象,用于快速判断括号是否成对
    const pairs = { ')': '(', '}': '{', ']': '[' };

    // 遍历输入字符串
    for (let char of str) {
        // 如果是左括号,将其压入栈中
        if (Object.values(pairs).includes(char)) {
            stack.push(char);
        }
        // 如果是右括号
        else if (Object.keys(pairs).includes(char)) {
            // 如果栈为空,说明没有匹配的左括号,返回false
            if (stack.length === 0) return false;
            // 弹出栈顶元素,查看是否与当前右括号匹配
            let top = stack.pop();
            if (pairs[char] !== top) {
                // 不匹配,返回false
                return false;
            }
        }
        // 如果字符既不是左括号也不是右括号,直接忽略或根据需求处理
        else {
            // 这里假设输入只包含括号,不做特殊处理
        }
    }

    // 如果遍历完字符串后栈为空,说明所有括号都已正确匹配,返回true;否则返回false
    return stack.length === 0;
}

// 测试代码
console.log(isValidParentheses("()[]{}")); // 应该输出 true
console.log(isValidParentheses("(]"));     // 应该输出 false
console.log(isValidParentheses("([)]"));   // 应该输出 false
console.log(isValidParentheses("{[]}"));   // 应该输出 true
posted @   jialiangzai  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示