HJ66 配置文件恢复
题目描述
示例
代码
js
/*
这个是检索字符串的题 用一个map缓存一下结果
key是命令
value是执行的指令
*/
let readline = require('readline')
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
let commondMap = new Map([
['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'],
])
let noMatchString = 'unknown command' // 没有匹配到的指令时输出
rl.on('line', line=>{
// 先处理指令,区分一个单词的和两个单词的
let {oneWord, twoWord} = distingCommond(Array.from(commondMap.keys()))
// 处理指令,看输入的指令是一个单词的还是两个单词的
let input = line.split(' ')
let matchCommond = [] // 匹配出的结果
if(input.length === 1){ // 说明是需要匹配一个指令的
oneWord.forEach(item=>{
if( item[0].indexOf(input[0]) === 0 ){
matchCommond.push(item)
}
})
}else { // 说明是需要匹配两个指令的
twoWord.forEach(item=>{
// 两个部分都匹配上
if(item[0].indexOf(input[0]) ===0 && item[1].indexOf(input[1])==0 ){
matchCommond.push(item)
}
})
}
if(matchCommond.length === 0 || matchCommond.length > 1){
// 一个没匹配到,或者匹配到了多个 就直接返回匹配失败
console.log(noMatchString)
}else {
let tempArr = matchCommond[0]
let key
if(tempArr.length == 1){ // 说明是一个指令的
key = tempArr.join('')
}else { // 两个指令的
key = tempArr.join(' ')
}
console.log(commondMap.get(key))
}
})
// 将指令区分一下,一个单词的和两个单词的
function distingCommond(keys){
let oneWord = []
let twoWord = []
keys.forEach(item=>{
let tempArr = item.split(' ')
if(tempArr.length > 1){
twoWord.push(tempArr)
}else {
oneWord.push(tempArr)
}
})
return {
oneWord,
twoWord
}
}