回文解码

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

回文解码的相关文章

JavaScript 实现回文解码

题目也是源自今日头条前端工程师笔试题.题目描述: 现在有一个字符串,你要对这个字符串进行 n 次操作,每次操作给出两个数字:(p, l) 表示当前字符串中从下标为 p 的字符开始的长度为 l 的一个子串.你要将这个子串左右翻转后插在这个子串原来位置的正后方,求最后得到的字符串是什么.字符串的下标是从 0 开始的. 思路:首先获得关于(P,l)的子串,获得子串可以使用string.substring方法.然后反转子串,字符串没有反转方法,但是数组有,所以可以先把字符串转为数组,反转之后再转为字符串

16-最少回文数组

Splits the string 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 Hrdv is interested in a string,especially the palindrome string.So he wants some palindrome string. A sequence of characters is a palindrome if it is the same written forwards and backwards. Fo

最少回文串--牛客网(秋招备战专场三模)-C++方向

题目描述:一个字符串从左向右和从右向左读都完全一样则是回文串,给定一个字符串,问该字符串中的字符所能组成的最少的回文串的个数为多少 解题思路:如果一个字符出现的次数为偶数,则必能组成回文串,如果一个字符出现奇数次,只能自己组成回文串,题目中问最少的回文串数目,即求出现次数为奇数次的字符个数即可,定义a存储每个字符出现的次数,统计出现奇数次的字符的个数,即为输出 1 #include <iostream> 2 #include <string> 3 using namespace s

回文判断

一个整形数是否是回文 also leetcode 9 Palindrome Number要求空间复杂度O(1)按位判断一般是/和%的游戏,首先取首位 a/h (h是最接近a的10的次方,比如12321,h预计算出是10000), 再取末位a%10; 比较首位和末位是否相等,不等就返回false; 如图: 然后舍弃掉已经比较过的两个位数,从a中去掉首尾 12321 --> 232. a = a % h; // 去掉首 a = a /10; //去掉尾 h = 100; // 因为已经去掉了两位 如

判断一个数是否为回文数

#include <stdio.h> int is_palindromic(int num) {  char _old = num;  char _new = 0;  while (num)  {   _new = _new * 10 + (num % 10);   num = num / 10;  }  if (_new == _old)  {   return 1;  }  else  {   return 0;  } } int main() {  int num = 0;  scanf

判断一个字符串是否为回文字符串

#include <stdio.h> #include <assert.h> #include <string.h> int is_pal_str(const char *p) {  assert(p);  int len = strlen(p);  const char *start = p;  const char *end = p+len - 1;  while (start < end)  {   if (*start == *end)   {    st

LeetCode 9 Palindrome Number (回文数)

翻译 确定一个整数是否是回文数.不能使用额外的空间. 一些提示: 负数能不能是回文数呢?(比如,-1) 如果你想将整数转换成字符串,但要注意限制使用额外的空间. 你也可以考虑翻转一个整数. 然而,如果你已经解决了问题"翻转整数(译者注:LeetCode 第七题), 那么你应该知道翻转的整数可能会造成溢出. 你将如何处理这种情况? 这是一个解决该问题更通用的方法. 原文 Determine whether an integer is a palindrome. Do this without ex

要求循环输入一个数,判断是否为回文数

import java.util.Scanner; public class HuiWenShu { public static void main(String[] args) { Scanner input = new Scanner(System.in); char c = 'y'; //初始化c为y,为下面的循环做好准备 while(c == 'y'){ while(c == 'y'){ System.out.println("请随意输入一个大于三位的奇位数"); //回文数属

编程之美2015 #2 回文字符序列

题目: 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串aba中,回文子序列为"a", "a", "aa", "b", "aba",共5个.内容相同位置不同的子序列算不同的子序列. 输入 第一行一个整数T,表示数据组数.之后是T组数据,每组数据为一行字符串. 输出 对于每组数据输出一行,格式为&