代码编辑器

程序的输入为已有的代码文本和指令序列,程序需输出编辑后的最终文本。指针初始位置位于文本的开头。

支持的指令(X为大于等于0的整数,word为无空格的字符串):

FORWARD X指针向前(右)移动X,如果指针移动位置超过了文本末尾,则将指针移动到文本末尾

BACKWARD X 指针向后(左)移动X,如果指针移动超过了文本开头,则将指针移动到文本开头

SEARCH-FORWARD word 从指针当前位置向前查找word并将指针移动到word的起始位置,如果未找到则保持不变

SEARCH-BACKWARD word 在文本中向后查找word并将指针移动到word的起始位置,如果未找到则保持不变

INSERT word 在指针当前位置前插入word,并将指针移动到word的结尾

REPLACE word 在指针当前位置替换并插入字符(删除原有字符,并增加新的字符)

DELETE X 在指针位置删除X个字符

输入描述:

输入的第一行为命令列表的长度K

输入的第二行为文件中的原始文本

接下来的K行,每行为一个指令

输出描述:

编辑后的最终结果

备注:

文本最长长度不超过256K

示例1:

输入

1

ello

INSERT h

输出

hello

let doNum = Number(readline());
let str = readline()
let index = 0 // 光标位置
for(let i =0;i<doNum;i++){
    let item = readline().split(' ')
    let doName = item[0]
    let val = item[1]
    let word = ''
    doSomeThing(doName,val)
}
console.log(str)
function doSomeThing(name,value){
    switch(name){
         case 'BACKWARD':
            index = index - Number(value)>=0?index - Number(value):0
            break
        case 'SEARCH-FORWARD':
            word = value
            let wordIndex = str.indexOf(value);
            index = wordIndex>-1?wordIndex:index
            break
        case 'SEARCH-BACKWARD':
            word = value
            let wordIndex2 = str.lastIndexOf(value);
            index = wordIndex2>-1?wordIndex2:index
            break
        case 'INSERT':
            if(index===0){
               str = value + str
            }else{
               str = str.slice(0,index)+value+str.slice(index)
            }
            break
        case 'REPLACE':
            if(index===0){
               str = value + str.replace(value,value2)
            }else{
               str = str.slice(0,index) + str.slice(index).replace(word,value)
            }
            break
        case 'DELETE':
            if(index+1-Number(value)>0){
                str = str.slice(0,index-Number(value))+str.slice(index)
            }else{
                str = str.slice(index)
            }
            break
    }
}
机试题 文章被收录于专栏

某机试题,网上很少用js写的答案只有自己写了

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务