我正试图从两个3位数的乘积中得到最大的回文。如果您不知道,回文数就是向前和向后相同的数字(例如:9009或55855等)。
我的方法涉及遍历所有三个数字,如果乘积本身反转,则将它们相乘,然后用该乘积更新变量“回文”。我期望的是906609,但它返回的是99999。
一开始我就绞尽脑汁,没有发现任何问题,但显然有什么问题。有什么想法吗?
//Hoist 'palindrome'
var palindrome = 0;
//Loop through 100 - 1000
for(var i = 100; i < 1000; i++) {
//Within that loop, loop through 100 - 1000
for(var k = 100; k < 1000; k++) {
//Convert product of K & I and reverse to strings
var product = (k * i).toString();
var reversed = product.match(/.{1}/g).reverse().toString().replace(/,/g, '');
//If the product and reverse are the same, update palindrome
if(product === reversed) {
if(reversed > palindrome) {
var palindrome = product;
}
}
}
}
//Expecting 906609, but returns 99999
console.log(palindrome)
答案 0 :(得分:4)
因为
"99999" > "906609" // true
在比较字符串时,将按词法比较它们。您要比较数字:
if(+reversed > +palindrome)