/*现在有一个字符串,你要对这个字符串进行 n 次操作,每次操作给出两个数字:(p, l) 表示当前字符串中从下标为
p 的字符开始的长度为 l 的一个子串。你要将这个子串左右翻转后插在这个子串原来位置的正后方,求最后得到的字符
串是什么。字符串的下标是从 0 开始的,你可以从样例中得到更多信息。*/
输出一个字符串代表最后得到的字符串。
ab 2 0 2 1 3
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
原文:http://www.cnblogs.com/html-css-js/p/7531367.html