Javascript 寻找最长回文
我在对它进行了修补后使其工作,但不清楚-1和+1的某些情况。下面是我的代码以及评论中的问题。同时在这里重述问题:Javascript 寻找最长回文,javascript,algorithm,data-structures,Javascript,Algorithm,Data Structures,我在对它进行了修补后使其工作,但不清楚-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)