8.31华为机试 第一题字符串压缩 JavaScript

//前后华为给的代码我忘了,直接写核心

//处理句子和字典
var sentence = inputArrays[0].split(" ")
var dictionary = inputArrays[1].split(" ")
//大小写不敏感,把字典全改大写,句子里面有特殊字符,改不了
dictionary = Array.from(dictionary,item=>item.toUpperCase())
//处理引号内的,思路是定义一个开关。当时引号单词忘了咋拼。。
var isInside = false
for(let i in sentence){
    if(sentence[i]=='"'){
        isInside = !isInside    //开关
        continue    //引号不进行字典查询
    }
    var str = sentence[i].replace(/[^a-zA-Z]/,"")
    //含有特殊字符的话toUpperCase()会报错,在这里卡了蛮久,属于是考场上学知识了
    if(dictionary.includes(str.toUpperCase())){
        //之前用for循环倒序查字典的,过80%,剩下的超时,所以优化,先查有没有
        var j = sentence[i] = dictionary.lastIndexOf(str.toUpperCase())
        //最后的索引,当然lastIndexOf()
        str.length==sentence[i].length? sentence[i]=j:sentence[i]=j+sentence[i][sentence[i].length-1]
        //通过对比长度来看有没有句号逗号,有的话取过来
    }
}
console.log(sentence.join(" ")) 
仅分享一下自己的解法,记录自己笔试以来的第一次A。
非科班8月才开始刷算法,每次都遇到矩阵,每次都不会做,第二题直接0,爆哭
全部评论
为啥不用hashmap键存list啊然后哈希的值就是最后一次出现的index,这样不就不用每次都for了吗
1
送花
回复 分享
发布于 2022-09-01 00:28 安徽
您好,可以简单描述一下题目要求吗!
1
送花
回复 分享
发布于 2022-08-31 22:02 日本
京东
校招火热招聘中
官网直投
请问这个题关于引号的,is " the和is" the和is "the这三种都可能存在吗
点赞
送花
回复 分享
发布于 2022-09-01 16:49 湖南
第二题是二维数组,类似泡泡糖的游戏,1墙,0可以走,2起点,3终点,4陷阱,6炸弹,走到6可以让6四周的墙变成0,走到4陷阱时间是3,其他每走一个是1。求2-3的最短时间
点赞
送花
回复 分享
发布于 2022-08-31 22:09 浙江
楼主,请问华子笔试可以用本地编辑器写吗?
点赞
送花
回复 分享
发布于 2022-09-01 11:39 广东
楼主厉害,同前端,华子的笔试一个不会😂
点赞
送花
回复 分享
发布于 2022-09-01 10:48 四川

相关推荐

7 13 评论
分享
牛客网
牛客企业服务