/*现在有一个字符串,你要对这个字符串进行 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
- 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);
时间: 2024-10-18 01:51:36