• 回文解码


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

    输出描述:

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

    输入例子1:
    ab
    2
    0 2
    1 3
    输出例子1:
    abbaabb
    var input =
    "1QEjTeEpG6
    8
    5 1
    5 5
    9 3
    6 7
    2 17
    3 25
    47 7
    7 18";
    main(input);function main(input){
        var s = input.split("
    ");/*取得每一行的数据 构成数组*/ 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
    8
    5 1
    5 5
    9 3
    6 7
    2 17
    3 25
    47 7
    7 18";
    main(input);function main(input){
        var s = input.split("
    ");/*取得每一行的数据 构成数组*/ 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 2 0 2 1 3";  
    2. function reverscon (input) {  
    3.     input_array = input.split(" ");  
    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);
  • 相关阅读:
    MySQL中的错误
    [Err] 1064
    表单元素input 、button都要放进form里面
    【电商15】floor tab选项卡
    css三大特性——继承性:继承哪些样式
    border影响盒子大小-解决办法:
    padding影响&不影响盒子实际大小的情况
    【电商14】recom
    单行的多余文字,用省略号显示
    放精灵图的小盒子:_______;放字体图标:_______
  • 原文地址:https://www.cnblogs.com/html-css-js/p/7531367.html
Copyright © 2020-2023  润新知