【发布时间】:2020-10-29 17:16:47
【问题描述】:
我有一个递归函数来检查一个字符串是否是回文,但我的作业要求我计算一个字符串中的回文数(例如 kayak 有 2 个)。
我真的很困惑如何实现一个计算回文数的递归函数。这是我当前的代码:
function isPalindrome(string) {
if (string.length <= 1) {
return true;
}
let [ firstLetter ] = string;
let lastLetter = string[string.length - 1];
if (firstLetter === lastLetter) {
let stringWithoutFirstAndLastLetters = string.substring(1, string.length - 1);
return isPalindrome(stringWithoutFirstAndLastLetters);
} else {
return false;
}
}
【问题讨论】:
-
这不是一个非常微不足道的问题。最简单的实现是遍历输入的所有可能的子字符串。也许有更聪明的东西。
-
哦,好的,谢谢,你知道我该如何开始吗?
-
我的大脑开始思考从索引 0-(n-1) 中寻找回文的过程。然后,从索引 1-(n-2) 中寻找回文,依此类推
-
我不确定
if (string.length <= 1) { return true;。如果您希望计算长度为 1 的字符串,那么每个单独的字符也不应该匹配吗?也就是说,kayak有 7 个结果,而不仅仅是 2 个结果? -
检查每个字母,左右扩展,检查字母是否保持不变(明显的细节,如偶数/奇数回文等......)
标签: javascript function recursion palindrome