首页 > 试题广场 >

回文解码

[编程题]回文解码
  • 热度指数:10237 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

现在有一个字符串,你要对这个字符串进行 n 次操作,每次操作给出两个数字:(p, l) 表示当前字符串中从下标为 p 的字符开始的长度为 l 的一个子串。你要将这个子串左右翻转后插在这个子串原来位置的正后方,求最后得到的字符串是什么。字符串的下标是从 0 开始的,你可以从样例中得到更多信息。


输入描述:

每组测试用例仅包含一组数据,每组数据第一行为原字符串,长度不超过 10 ,仅包含大小写字符与数字。接下来会有一个数字 n 表示有 n 个操作,再接下来有 n 行,每行两个整数,表示每次操作的(p , l)。

保证输入的操作一定合法,最后得到的字符串长度不超过 1000。



输出描述:

输出一个字符串代表最后得到的字符串。

示例1

输入

ab
2
0 2
1 3

输出

abbaabb
let str = readline();
let n = parseInt(readline());
for(let i=0;i<n;i++){
    let iList = readline().split(' ');
    let start = parseInt(iList[0]);
    let len = parseInt(iList[1]);
    let temp = str.substr(start,len).split('').reverse().join('');
    str = str.slice(0,start+len) + temp + str.slice(start+len);
}
print(str);
发表于 2022-04-15 23:54:50 回复(0)
js v8
var lines=[]
while(line=readline()){
    lines.push(line)
}
var str = lines[0]
var n = lines[1]
for (let i = 2; i < lines.length; i++) {
    var t = lines[i]
    var t_arr=t.split(' ')
    var p=parseInt(t_arr[0])
    var l=parseInt(t_arr[1])
    var end=p+l
    var prefix=str.slice(0,end)
    var suffix=str.substr(end)
    var temp=prefix.concat(str.slice(p,end).split('').reverse().join('')).concat(suffix)
    str=temp
}
console.log(str)

发表于 2020-02-14 14:43:46 回复(0)
var m = readline(0),
    n = parseInt(readline(1));
function test(){
    for(var i=0;i<n;i++){
        var arr = readline().split(" ");
        var start = parseInt(arr[0]);
        var end = parseInt(arr[1]);
        var l =m.substr(start,end).split("").reverse().join("");
        m = m.slice(0,start+end)+l+m.slice(start+end)
    }
    print(m)
}
test()
发表于 2018-10-19 09:02:02 回复(0)
process.stdin.resume();
process.stdin.setEncoding('ascii');

var input = "";
var input_array = "";

process.stdin.on('data', function(data) {
    input += data;
});

process.stdin.on('end', function() {
    input_array = input.split("\n");
    var nLine = 0;

    while (nLine < input_array.length) {
        var line = input_array[nLine++].trim();
        if (line === '') {
            continue;
        }
        var s = line;
        var n = +input_array[nLine++];
        while (n--) {
            var input_arrays = input_array[nLine++].trim().split(' ');
            var p = +input_arrays[0];
            var l = +input_arrays[1];

            //你的代码
            var arr = s.split('')
            var str = s.substr(p, l).split('').reverse().join('')
            arr.splice(p + l, 0, str)
            s = arr.join('')
        }
        console.log(s)
    }
});


发表于 2017-03-21 22:03:18 回复(2)
process.stdin.resume();
process.stdin.setEncoding('ascii');

var input = "";
var input_array = "";

process.stdin.on('data', function (data) {
    input += data;
});

process.stdin.on('end', function () {
    input_array = input.split("\n");
    var nLine = 0;
    
    while(nLine < input_array.length){
        var line = input_array[nLine++].trim();
        if(line === ''){
            continue;
        }
        var s = line;
        var n = +input_array[nLine++];
        while(n--){
            var input_arrays = input_array[nLine++].trim().split(' ');
            var p = +input_arrays[0];
            var l = +input_arrays[1];

            //你的代码
            var insert_str =  s.substr(p,l).split("").reverse().join("");
            var array_s = s.split("");
            array_s.splice(p+l,0,insert_str);
            s = array_s.join("");
        }
    }
    console.log(s);
    return s;
});

发表于 2016-08-21 16:10:30 回复(0)