1. 程式人生 > >JavaScript 實現回文解碼

JavaScript 實現回文解碼

color 字符 位置 個數字 左右 開始 () 試題 [0

題目也是源自今日頭條前端工程師筆試題。題目描述:

現在有一個字符串,你要對這個字符串進行 n 次操作,每次操作給出兩個數字:(p, l) 表示當前字符串中從下標為 p 的字符開始的長度為 l 的一個子串。你要將這個子串左右翻轉後插在這個子串原來位置的正後方,求最後得到的字符串是什麽。字符串的下標是從 0 開始的。

思路:首先獲得關於(P,l)的子串,獲得子串可以使用string.substring方法。然後反轉子串,字符串沒有反轉方法,但是數組有,所以可以先把字符串轉為數組,反轉之後再轉為字符串。 最後將反轉後的子串插入到原來子串的後面。實現將字符串插入到原串特定位置,字符串沒有現成的方法,兩種方法,1是可以使用substr,slice等方法先分割字符串然後在連接。2是使用數組的splice方法,先將字符串轉為數組,然後用solice方法在指定位置插入元素,然後再轉為字符串。

var input = "ab\n2\n0 2\n1 3";  
function reverscon (input) {  
    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 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);

JavaScript 實現回文解碼