leetcode最高频的栈结构试题

这篇博客探讨了三个JavaScript编程问题:1) 判断给定字符串中的有效括号;2) 简化包含'.'和'..'的路径字符串;3) 删除字符串中相邻的重复字符。通过示例代码,展示了如何高效地解决这些问题,涉及栈数据结构的使用和字符串操作技巧。
摘要由CSDN通过智能技术生成

1、20题判断有效括号

var isValid = function(s) {

    let stack=[];
    for(let i=0;i<s.length;i++){
        const start=s[i];
        if(s[i]==="(" || s[i]==="{" || s[i]==="["){
            stack.push(s[i]);
        }else{
            const end=stack[stack.length-1];
            if((start ==='(' && end===')')||(start ==='{' && end==='}')||(start ==='[' && end===']')){
                stack.pop();
            }else{
                return false;
            }
        }
    }

    // 入栈和出栈是匹配的,stack.length===0
    return stack.length===0;

};

let a=isValid("{)")
console.log(a)

2、71题简化路径

var simplifyPath = function(path) {
    let stack=[];
    let str='';
    let arr=path.split('/');

    arr.forEach(val => {
        if(val && val=='..'){
            stack.pop()
        }else if(val && val !='.'){
            stack.push(val);
        }
    });

    arr.length ? str='/'+stack.join('/'):str='/';

    return str;

};

let c=simplifyPath("/a/./b/../../c/");
console.log(c);

4、1047.删除字符串中所有相邻重复项

var removeDuplicates = function(s) {
    let stack=[];
    for(v of s){
        let prev=stack.pop();
        if(prev !=v){
            stack.push(prev);
            stack.push(v);
        }
    }

    return stack.join(''); //数组转化为字符串
};

let a=removeDuplicates('abbaca');
console.log(a);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vues

刚好遇见你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值