leetcode9. Palindrome Number
判断一个整数是否是回文的。
思路:
1.非法的直接返回false;
2.获取整数的总长度,然后设置两个游标,分别从中间位置向两边移动,依次匹配,一旦碰到不同数字,就返回false;
3.全部匹配完无中断,返回true;
(也可以设置两个游标,从整数的两边向中间方向移动,依次匹配)
源码如下:
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
int len = 0;
int highHalf =0,lowHalf = 0;
int highMedianDividened=1,lowMedianDividened = 1;
int temp = x;
int highEnd = 0;
int lowHead = 0;
while(temp >0 ) {temp /= 10;len++;}
double halfLen = len/2.0;
highMedianDividened = pow(10,ceil(halfLen));
lowMedianDividened = pow(10,floor(halfLen));
highHalf = x / highMedianDividened;
lowHalf = x % lowMedianDividened;
temp = halfLen;
while(temp>0){
highEnd = highHalf % 10;
highHalf /= 10;
lowMedianDividened /= 10;
lowHead = lowHalf / lowMedianDividened;
lowHalf %= lowMedianDividened;
if(highEnd != lowHead) return false;
temp--;
}
return true;
}
};