LeetCode 9 判断回文数

来源:互联网 发布:适用于编程的字体 编辑:程序博客网 时间:2024/06/18 11:31

此题关键在于抽取出数字的某一位 用求余和除操作即可

n为数字位数

x的第i位(高位从0开始) = x%10expn-i/10expn-i-1  

与x关于中心对称的数字是  x%10expi+1/10exp i 

有了这点只需要做好健壮性就能轻易过关


PS 全体负数不是回文数这点比较坑


c# code


public class Solution
{
    public bool IsPalindrome(int x)
    {
        if (x == int.MinValue)
            return false;
        if (x < 0)
        {
            return false;
        }
        Int64 i = 1;
        int n = 0;
        while (i <= x)
        {
            i *= 10;
            n++;
        }
        i = 0;//取第i位数字(0开始高位)
        while (i < n / 2)
        {
            if (i == 0)
            {
                if (x / (int)Math.Pow(10, n - 1) == x % 10)
                {
                    i++;
                    continue;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                if (x % (int)Math.Pow(10, n - i) / (int)Math.Pow(10, n - i - 1) ==
                    x % (int)Math.Pow(10, i + 1) / (int)Math.Pow(10, i))
                {
                    i++;
                }
                else
                {
                    return false;
                }
            }
        }
        return true;
    }
}


1 0
原创粉丝点击