1. 程式人生 > >回文解碼

回文解碼

spa cin line lis http length comment div eve

/*現在有一個字符串,你要對這個字符串進行 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. while(nLine < input_array.length){
  6. var line = input_array[nLine++].trim();
  7. if(line === ‘‘){
  8. continue;
  9. }
  10. var s = line;
  11. var n = +input_array[nLine++];
  12. while(n--){
  13. var input_arrays = input_array[nLine++].trim().split(‘ ‘);
  14. var p = +input_arrays[0];
  15. var l = +input_arrays[1];
  16. //你的代碼
  17. var substring = s.substring(p,p+l);
  18. substring = substring.split(‘‘).reverse().join(‘‘);
  19. var arrs = s.split(‘‘); //這一步需要一個變量保存結果,因為splice返回的是
  20. arrs.splice(p+l,0,substring);/被刪除的字符,所以連寫的話會返回空
  21. s = arrs.join(‘‘); //abbaabb
  22. }
  23. }
  24. console.log(s);
  25. };
  26. reverscon(input);

回文解碼