LeetCode 125:回文数容易的Leetcode

问题描述 投票:0回答:2

LeetCode 125

这是我的答案。但是,我无法通过“ 11”的测试用例。我找不到代码中的错误。请帮忙!谢谢!

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
    if (x === 0) {
        return true;
    }
    
    if (x < 0 || x % 10 === 0) {
        return false;
    }

    let rev = 0;
    
    while (x > rev) {

        pop = x % 10;
        x = x / 10;
        rev = (rev * 10) + pop;
    }
    
    if (x === rev || x === rev / 10) {
        return true;
    }
    else {
        return false;
    }
};
javascript algorithm palindrome leetcode
2个回答
1
投票

查找回文本质上是您通常会使用strings而不是数字变量执行的操作,所以我建议将您的数字转换为字符串,然后从那里开始:

var isPalindrome = function(x) {
    x = x + "";   // convert to string, if x be a number
    var isPalindrome = true;
    for (i = 0; i < x.length/2; i++) {
        if (x.substring(i, i+1) != x.substring(x.length-1-i, x.length-i)) {
            isPalindrome = false;
            break;
        }
    }

    return isPalindrome;
}

console.log(isPalindrome(1234321));
console.log(isPalindrome(1234329));

这里的策略只是迭代字符串的一半,并断言每个字符都与另一半匹配。请注意,在输入的字符数为奇数的情况下,我们不需要检查中间字符。


0
投票

使用字符串检查回文是非常容易和直接的。话虽如此,如果您想了解如何在不将数字更改为字符串的情况下进行操作,

  • 首先初始化一个以Math.pow(10, digit count-1)开头的变量
  • 循环直到x的值大于9
    • 内部循环比较第一位和最后一位,如果它们不相等,则返回false
    • 在每次迭代中,从x删除第一个和最后一个数字,并将起始位置减少100

var isPalindrome = function(x) {
   // to get the digits from start we need to get log10 of given value
   let start = Math.pow(10,Math.ceil(Math.log10(x))-1)
   while(x > 9){
    // compare first digit with the last digit
    if(Math.floor(x/start) != (x % 10)){
      return false
    }
    // remove first digit of current x
    x = x % start
    // remove last digit of current x
    x = Math.floor(x/10)
    // reduce start by 100 as we removed 2 digits
    start /= 100
   }
   return true
};

console.log(isPalindrome(11))
console.log(isPalindrome(1))
console.log(isPalindrome(12341))
console.log(isPalindrome(1221))
console.log(isPalindrome(12321))

注意:-我们进行(digit count - 1),以便捕获第一位数字

© www.soinside.com 2019 - 2024. All rights reserved.