Determine whether an integer is a palindrome. Do this without extra space.
题意判断数字是否是回文串,只能用常数空间,不能转换成字符串,不能反转数字。
先计算数字的位数,分别通过除法和取余,提取出要对比的对应数字。
回文(指顺读和倒读都一样的词语)
class Solution {
public:bool isPalindrome(int x) {if(x<0)return false;int len = 0;int big = 1;int small = 1;int tmp = x; // 不能改变x的值!!while(tmp != 0) {len++;tmp /= 10;if(tmp != 0)big *= 10;}for(int i=0;i<len/2;i++) {if(x/big%10 != x/small%10) // 很巧妙!!return false;big /= 10;small *= 10;}return true;}
};