1. 程式人生 > >LeetCode 9 判斷迴文數

LeetCode 9 判斷迴文數

此題關鍵在於抽取出數字的某一位 用求餘和除操作即可

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;
    }
}