我正在尝试检查数字是否为Java回文
我已经将数字转换为字符串,并将其取反并保存为新变量:reverseNum。但是,当我去检查num == reverseNum
时,我似乎无法理解逻辑是否正常工作
function palindrome() {
function reverse(num) {
num = num.toString();
let reverseNum = [];
for (let i = 1; i <= num.length; i++) {
reverseNum.push(num[num.length - i]);
}
return reverseNum.join('');
}
function check(num, reverseNum) {
//is palindrome
if (num == reverseNum) {
return true;
//is not palindrome
} else {
return false;
}
}
}
console.log(palindrome(121));
预期的输出应为true,例如,输入:121,输出:121
例如,如果输入:79,输出:97
,则预期输出应为false答案 0 :(得分:1)
我创建了单独的函数。希望这会有所帮助。
function reverse(num) {
num = num.toString();
var reverseNum = [];
for (var i = 1; i <= num.length; i++) {
reverseNum.push(num[num.length - i]);
}
return reverseNum.join('');
}
function palindrome(num) {
var reverseNum = parseInt(reverse(num));
console.log("Num:", num);
console.log("Reverse Num:", reverseNum);
if (num === reverseNum)
return true;
//is not palindrome
else
return false;
}
console.log(palindrome(121));
答案 1 :(得分:1)
您不需要两个功能。只需一个函数palindrome()
就足以检查回文。
num
转换为字符串。numString
分配给一个空字符串。num
字符串中的每个字符推到numString
字符串中。numString
是否与初始num
字符串相同。
function palindrome(num) {
num = num.toString();
let reverseNum = "";
for(i = 1; i <= num.length; i++) {
reverseNum += num.charAt(num.length - i);
}
if (num == reverseNum) {
console.log(num + " is a Palindrome!!");
return true;
} else {
console.log(num + " is not a Palindrome!!");
return false;
}
}
palindrome(224);
palindrome(424);
palindrome(222);
palindrome(363);
答案 2 :(得分:1)
正如评论所建议的,这实际上可以归结为不向函数palindrome
中传递值,然后不从中返回任何值。因此,这是一个快速修复:
function palindrome(number) {
function reverse(num) {
num = num.toString();
let reverseNum = [];
for (let i = 1; i <= num.length; i++) {
reverseNum.push(num[num.length - i]);
}
return reverseNum.join('');
}
function check(num, reverseNum) {
//is palindrome
if (num == reverseNum) {
return true;
//is not palindrome
} else {
return false;
}
}
return check(number, reverse(number))
}
console.log(palindrome(1211));
这可以用更少的代码来完成,方法是将数字转换为数组,取反,然后检查它:
const palindrome = number => `${number}` === `${number}`
.split('')
.reverse()
.join('')
console.log(palindrome(121))
console.log(palindrome(1211))
修改 根据要求进一步解释。
我确实考虑过将其转换为标准函数,以使其更加清晰,但我认为最好解释一下发生的情况。
${number}
只是将我们的数字转换为字符串。我们想要这样做,以便我们可以更轻松地将其转换为数组。
我们想将其转换为数组,因为数组具有reverse
方法,这正是我们所需要的。因此,为了获得反向数组,我们可以使用:
`${number}`
.split('')
.reverse()
所以现在我们有了一个数组,该数组是我们数字反转的字符。现在,我们需要将其转换为可与原始数字进行比较的表格。为此,我们可以使用join()
将其返回到字符串。现在我们有了一个初始编号的反向字符串。现在,我们只需要将其与初始数字进行比较,看看是否有回文。
由于将数字与字符串进行比较并不理想,因此我们需要转换其中之一。在我的示例中,我已使用${number}
将初始数字转换为字符串。
箭头语法只是标准功能的简写(尽管目前尚不存在其他差异)。
因为我们使用的方法采用一个数组,然后返回一个数组,所以我们可以将它们链接在一起以使代码简洁漂亮。
总结:
// convert our numbers to strings
`${number}` === `${number}`
// split the string into an array
.split('')
// reverse the array
.reverse()
// convert the array back to a string
.join('')
如果您有任何具体问题,请告诉我!
答案 3 :(得分:0)
可以做到
function palindrome(num) {
num = num.toString();
let reverseNum = [];
for (let i = 1; i <= num.length; i++) {
reverseNum.push(num[num.length - i]);
}
var e=reverseNum.join('')
alert(e)
return check(num,e);
}
function check(num, reverseNum) {
//is palindrome
if (num == reverseNum) {
return true;
//is not palindrome
} else {
return false;
}
}
alert(palindrome(121));
您没有返回检查功能,并且功能范围有误。