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