• JavaScript 实现回文解码


    题目也是源自今日头条前端工程师笔试题。题目描述:

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

        思路:首先获得关于(P,l)的子串,获得子串可以使用string.substring方法。然后反转子串,字符串没有反转方法,但是数组有,所以可以先把字符串转为数组,反转之后再转为字符串。 最后将反转后的子串插入到原来子串的后面。实现将字符串插入到原串特定位置,字符串没有现成的方法,两种方法,1是可以使用substr,slice等方法先分割字符串然后在连接。2是使用数组的splice方法,先将字符串转为数组,然后用solice方法在指定位置插入元素,然后再转为字符串。

    var input = "ab
    2
    0 2
    1 3";  
    function reverscon (input) {  
        input_array = input.split("
    ");  
        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 substring = s.substring(p,p+l);  
                substring = substring.split('').reverse().join('');  
                var arrs = s.split('');     //这一步需要一个变量保存结果,因为splice返回的是  
                arrs.splice(p+l,0,substring);    //被删除的字符,所以连写的话会返回空  
                s = arrs.join('');    //abbaabb  
            }  
             
        }  
        console.log(s);  
    } 
    reverscon(input);  
  • 相关阅读:
    笔记:Oracle查询重复数据并删除,只保留一条记录
    64位系统安装ODBC驱动的方法
    批量Excel数据导入Oracle数据库
    Oracle自我补充之Decode()函数使用介绍
    解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
    Linux命令区
    Linux下安装PHP+Nginx+Msql
    Thinkphp时间转换与统计的问题
    phpStydy配置memcache扩展
    Thinkphp+Nginx(PHPstudy)下报的404错误,403错误解决
  • 原文地址:https://www.cnblogs.com/guorange/p/7253852.html
Copyright © 2020-2023  润新知