题解 | #配置文件恢复#

配置文件恢复

https://www.nowcoder.com/practice/ca6ac6ef9538419abf6f883f7d6f6ee5

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

// 预定义一个命令对象
const commandObj = {
    'reset': 'reset what',
    'reset board': 'board fault',
    'board add': 'where to add',
    'board delete': 'no board at all',
    'reboot backplane': 'impossible',
    'backplane abort': 'install first',
}
// 上面对象的键值的组成的数组
const commandKeys = Object.keys(commandObj)
// 上面的数组转成二维数组 [['reset'], ['reset','board']....]
const arr = commandKeys.map(item=>item.split(' '))

rl.on('line', function (line) {
     // 筛选出匹配的命令,再使用命令作为key去commandObj对象获取值打印
    const keys = line.split(' ')
    // 只有一个词,则只能匹配第一个命令,其他命令就算匹配上也是不成功的
    if(keys.length === 1){
        if(commandKeys[0].includes(keys[0])){
            console.log('reset what')
        }else {
            console.log('unknown command')
        }
    }else if(keys.length === 2){
        // 循环遍历输入的关键字,一个一个判断是否匹配上
       console.log(handleMatch(keys, arr))
    }
    
});


/**
 * 匹配上且命令唯一则返回对应的命令
 * 否则返回 unknown command
 */
function handleMatch(keys: string[], arr: any[]){
    let res = []
     
    for(let j = 1; j < arr.length; j++ ){
        // 当两个关键词分别匹配上命令的第一和第二个字符串时,就添加到res
        // 注意需要从第一个开始匹配,不能只是包含就可以了,所以应该需要使用正则
        const reg1 = new RegExp(`^${keys[0]}`,"g");
        const reg2 = new RegExp(`^${keys[1]}`,"g");
        if(reg1.test(arr[j][0]) && reg2.test(arr[j][1]) ){
            res.push(arr[j].join(' '))
        }
    }
    
    // 唯一则返回命令
    if(res.length === 1){
        return commandObj[res[0]]
    }else {
        // 不唯一或者没有
         return  'unknown command'
    }
   
}

全部评论

相关推荐

今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,也有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
沉淀小子:干啥都不丢人啊,生存是必须要的,销售很考验一个人综合素质能力的,好的销售人脉和资源可不比写字楼的白领差啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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