Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 寻找最长回文_Javascript_Algorithm_Data Structures - Fatal编程技术网

Javascript 寻找最长回文

Javascript 寻找最长回文,javascript,algorithm,data-structures,Javascript,Algorithm,Data Structures,我在对它进行了修补后使其工作,但不清楚-1和+1的某些情况。下面是我的代码以及评论中的问题。同时在这里重述问题: 在“centeredPalindrome”辅助函数内的return语句中,为什么是“left+1”?这是因为你在扩张,但只关心“扩张中”的东西,而不是外部的限制 在同一个返回语句中,为什么正确和不正确+1?是因为您在while条件下执行的是“length”而不是“length-1”吗 如果它是奇数,我们将一个额外的扩展到左边-为什么?是不是因为一个奇怪的回文总是有“一个额外的开始”

我在对它进行了修补后使其工作,但不清楚-1和+1的某些情况。下面是我的代码以及评论中的问题。同时在这里重述问题:

  • 在“centeredPalindrome”辅助函数内的return语句中,为什么是“left+1”?这是因为你在扩张,但只关心“扩张中”的东西,而不是外部的限制
  • 在同一个返回语句中,为什么正确和不正确+1?是因为您在while条件下执行的是“length”而不是“length-1”吗
  • 如果它是奇数,我们将一个额外的扩展到左边-为什么?是不是因为一个奇怪的回文总是有“一个额外的开始”

  • 在奇数回文的情况下,您需要查看中心的左侧和右侧,如下所示

    var oddPal = centeredPalindrome(i - 1, i + 1);
            racecar
               ^
               |
               Center is one character because the string has an odd length (7 characters)
    
    在偶数回文的情况下,你需要看两个字符长的中心,要做到这一点,你需要考虑中心的额外长度。 你也可以为“左”做i-1,而不是为“右”做i+1。 但是你不想同时为这两个字母做这件事,因为那时你会看到一个三个字母的中间字母,或者从左边的-1开始

         var evenPal = centeredPalindrome(i, i + 1);
    
    
             abba
              ^^
              |
              Center is two characters because the string has an even length (4 characters)
    
    在“centeredPalindrome”辅助函数内的return语句中,为什么是“left+1”?这是因为你在扩张,但只关心“扩张中”的东西,而不是外部的限制

    在同一个返回语句中,为什么正确和不正确+1?是因为您在while条件下执行的是“length”而不是“length-1”吗

    left
    right
    变量是子字符串的左侧和右侧外部边界。期望的输出是这些边界之间的一切。举例说明:

    abcd_racecar-efgh ^ ^ | | | Final value of "right" (12) Final value of "left" (4) racecar ^ | Center is one character because the string has an odd length (7 characters) abba ^^ | Center is two characters because the string has an even length (4 characters) 如果它是奇数,我们将一个额外的扩展到左边-为什么?是不是因为一个奇怪的回文总是有“一个额外的开始”

    这样做是因为回文的中心可以是两个字符(如果长度为偶数),或者一个字符(如果长度为奇数)(在我看来,这实际上与变量名相矛盾)。举例说明:

    abcd_racecar-efgh ^ ^ | | | Final value of "right" (12) Final value of "left" (4) racecar ^ | Center is one character because the string has an odd length (7 characters) abba ^^ | Center is two characters because the string has an even length (4 characters) 赛车 ^ | 中心是一个字符,因为字符串的长度为奇数(7个字符) 阿巴 ^^ | 中心为两个字符,因为字符串的长度为偶数(4个字符)
    太棒了-所以我的第一系列问题实际上与.slice()函数在JS中的操作方式及其参数有关。嗯,关于这个奇怪的例子,我的第二个问题是-你用左-1来处理一个字符中心的左边(右边已经有了)?@devdropper87不,你通过
    i-1
    (我没有看到
    left-1
    )来处理两个字符中心(偶数长度回文),当然,只有通过将两个不同的索引传递给
    centeredPalindrome
    才能处理这些问题。否则,你在中间开始在一个单一的字符中心。这就是为什么我说变量名对我来说不完全有意义。哎呀,我是说I-1。我更新了我的问题,加入了你关于变量的建议。对于evenPal来说,(i,i+1)是有意义的,因为你不想从-1开始,但它仍然有点不清楚。我的意思是从-1开始 racecar ^ | Center is one character because the string has an odd length (7 characters) abba ^^ | Center is two characters because the string has an even length (4 characters)