首页 > 解决方案 > LeetCode 125:回文数 简易 LeetCode

问题描述

这是我的回答。但是,我无法通过“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;
    }
};

标签: javascriptalgorithmpalindrome

解决方案


您的问题似乎是LeetCode 9,并且在讨论区中,有一些公认的解决方案,例如:

JavaScript

var isPalindrome = function(x) {
    if (x < 0) 
        return false;

    let reversed = 0;
    for (let i = x; i > 0; i = Math.floor(i / 10)) 
        reversed = reversed * 10 + i % 10;

    return reversed === x;
};

Python

class Solution:
    def isPalindrome(self, x):
        if x < 0 or (x > 0 and not x % 10):
            return False

        return str(x) == str(x)[::-1]

爪哇

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0 || (x != 0 && x % 10 == 0))
            return false;

        int reversed = 0;

        while (x > reversed) {
            reversed = reversed * 10 + x % 10;
            x /= 10;
        }

        return (x == reversed || x == reversed / 10);
    }
}

还有另一个类似的 isPalindrome 问题,如果您可能感兴趣,我刚刚在下面复制:

JavaScript我

var isPalindrome = function(s) {
    var original = s.replace(/\W/g, ''); // means NON-WORD characters  
    var reversed = original.split('').reverse().join('');

    return original.toLowerCase() == reversed.toLowerCase();
};

JavaScript II

var isPalindrome = function(s) {
    var original = s.replace(/[^a-z0-9]/isg, '');
    var reversed = original.split('').reverse().join('');

    return original.toLowerCase() == reversed.toLowerCase();
};

爪哇

class Solution {
    public boolean isPalindrome(String s) {
        String original = s.replaceAll("(?i)[^a-z0-9]", "").toLowerCase();
        String reversed = new StringBuffer(original).reverse().toString();
        return original.equals(reversed);
    }
}

Python

class Solution:
    def isPalindrome(self, s):
        s = ''.join(re.findall(r'(?is)[a-z0-9]+', s)).lower()
        return s == s[::-1]
  • \W\w(non-word-character) 匹配任何与(same as )不匹配的单个字符[^a-zA-Z0-9_]

参考

您可以在以下链接中找到其他说明:


推荐阅读