【发布时间】:2019-08-09 20:06:12
【问题描述】:
我做了一个 JS 练习,我需要从一串数字创建一个回文。它有效,但我确信有一种更简洁的方法可以实现这一点。
来自edabit.com的方向:
一个数字可能不是回文,但它的后代可以是。通过将每对相邻数字相加以创建下一个数字的数字来创建数字的直接子代。创建一个函数,如果数字本身是回文数或其任何后代,则返回 true 到 2 位数
function palindromeDescendant(input) {
let newStr = input;
let newRevStr = (""+input).split('').reverse().join('');
checkEquality(newStr, newRevStr);
function checkEquality(a, b) {
if (a != b && (""+a).split('').length >= 2) {
sumPair(a);
} else if (a != b) {
result = `${false}: ${a}`;
} else {
result = `${true}: ${a}`;
}
}
function sumPair(nums) {
const a = (""+nums).split('').map(Number);
let b = [];
for (let i = 0; i < a.length -1; i++) {
b.push(a[i] + a[i + 1]);
i++
}
newStr = b.join('');
newRevStr = newStr.split('').reverse().join('');
checkEquality(newStr, newRevStr);
}
return result;
}
【问题讨论】:
-
如果该函数有效并且您正在寻找更好的编写方法的建议,Code Review 是发帖的合适位置。
-
代码显然是 DRY。您在哪里看到任何重复的代码?
-
我投票结束这个问题,因为代码审查不属于 Stack Overflow。它应该发布在:codereview.stackexchange.com
标签: javascript palindrome