回文解码

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

输出描述:

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

 

输入例子1:
ab
2
0 2
1 3

 

输出例子1:
abbaabb
var input =
"1QEjTeEpG6\n8\n5 1\n5 5\n9 3\n6 7\n2 17\n3 25\n47 7\n7 18";
main(input);function main(input){
    var s = input.split("\n");/*取得每一行的数据 构成数组*/ console.log(s)
    var str  = s[0].trim();
    var n = s[1].trim();
    var i = 2;
        while(n--){
        var arrayList = s[i++].trim().split(" ");
        var p = +arrayList[0];
        var l = +arrayList[1];
        var    string = str.substring(p,l+p).split();
        string = string.reverse().join();
            str+=string;
        }
    return str
    }

 请原谅我的语文水平有限,这道题本身所举的例子就存在误区,看例子实在字符串后面插入以后,再利用这个字符串,取相应的,插入;但运行的例子是,取了字符串插入到p后面;可是看第一个例子根本看不出来

 

后来我改了下,不知道为什么我的splice函数没有用错,但是字符串查不到相应的位置,还是插在末尾

    var input =
"1QEjTeEpG6\n8\n5 1\n5 5\n9 3\n6 7\n2 17\n3 25\n47 7\n7 18";
main(input);function main(input){
    var s = input.split("\n");/*取得每一行的数据 构成数组*/ console.log(s)
    var str  = s[0].trim();
    var n = s[1].trim();
    var i = 2;
        while(n--){
        var arrayList = s[i++].trim().split(" ");
        var p = +arrayList[0];
        var l = +arrayList[1];
        var    string = str.substring(p,l+p);
        string = string.split().reverse().join();
           var arr =  s.split(' ');
           arr.splice(p+1,0 ,string);
           str= arr.join();
        }
    return str
    }

这个博客有正确答案 http://blog.csdn.net/cinderella_hou/article/details/52013310

  1. var input = "ab\n2\n0 2\n1 3";  
  2. function reverscon (input) {  
  3.     input_array = input.split("\n");  
  4.     var nLine = 0;  
  5.       
  6.     while(nLine < input_array.length){  
  7.         var line = input_array[nLine++].trim();  
  8.         if(line === ''){  
  9.             continue;  
  10.         }  
  11.         var s = line;  
  12.         var n = +input_array[nLine++];  
  13.         while(n--){  
  14.             var input_arrays = input_array[nLine++].trim().split(' ');  
  15.             var p = +input_arrays[0];  
  16.             var l = +input_arrays[1];  
  17.   
  18.             //你的代码  
  19.             var substring = s.substring(p,p+l);  
  20.             substring = substring.split('').reverse().join('');  
  21.             var arrs = s.split('');           //这一步需要一个变量保存结果,因为splice返回的是  
  22.             arrs.splice(p+l,0,substring);/被删除的字符,所以连写的话会返回空  
  23.              s = arrs.join('');    //abbaabb  
  24.         }  
  25.          
  26.     }  
  27.     console.log(s);  
  28. };  
  29.      reverscon(input);
posted @ 2017-09-16 15:06  可以用标点做名字吗  Views(211)  Comments(0Edit  收藏  举报