前端-笔试算法题

一、给定一个以字符串表示的非负整数 num,移除这个数中的K位数字,使得剩下的数字最小。

1首先,将字符串中的每个数字遍历一遍,并将它们存储在一个栈中。

2.遍历数字的同时,如果栈不为空且栈顶元素比当前数字大,那么就弹出栈顶元素,并将 k的值减一,表示已经移除了一个数字。

3.如果栈为空,或者栈顶元素比当前数字小,那么就将当前数字压入栈中。

4.当所有数字都被遍历完后,如果还有 k 个数字需要移除,就在栈中弹出 k 个元素。

5.构建结果字符串。从栈底开始遍历栈中的元素,如果当前数字是 0 且前面的数字都是 0那么就跳过这个数字。否则,将当前数字添加到结果字符串中。

6.如果结果字符串为空,就返回0”

function removeKdigits(num,k){
    const stack = [];
    for(const digit of num){
        console.log("digit",digit);
        while(stack.length > 0 && stack[stack.length - 1]> digit && k){
            stack.pop();
            k -= 1;
        }
        stack.push(digit);
    }
    for( ; k > 0 ; --k){
        stack.pop();
    }
    let ans = "";
    let isLeadingZero = true;
    for(const digit of stack){
        console.log("digit22",digit);
        if(isLeadingZero && digit === '0'){
            continue;
        }
        isLeadingZero =false;
        ans+= digit;
    }
    return ans === ""? '0':ans;
}
console.log(removeKdigits('10200',1))//"200"

二、有效邮箱,leetcode里面的题 929. 独特的电子邮件地址

var numUniqueEmails = function(emails) {
    const emailSet = new Set();
    for (const email of emails) {
        const i = email.indexOf('@');
        let local = email.slice(0, i).split("+")[0]; // 去掉本地名第一个加号之后的部分
        local = local.replaceAll(".", ""); // 去掉本地名中所有的句点
        emailSet.add(local + email.slice(i));
    }
    return emailSet.size;
};

全部评论
这是哪家的笔试
点赞 回复 分享
发布于 2023-03-17 15:30 四川
感谢分享,学习一下
点赞 回复 分享
发布于 2023-03-17 15:30 浙江

相关推荐

不愿透露姓名的神秘牛友
昨天 12:23
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
评论
4
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务