PROBLEM:
Determine whether an integer is a palindrome. Do this without extra space.
SOLVE(C++):
class Solution {
public:
bool isPalindrome(int x) {
if(x<0||(x%10==0&&x!=0))
return false;
int input=x,output=0;
for(;input>output;input/=10)
output=output*10+input%10;
return input==output||input==output/10;
}
};
注意:如果是负数,则不是回文;如果用反转整数来做,需要创建比输入容量更大的变量以防止反转后溢出。这种反转一半的方法则可以避免该问题。需要注意两位数且个位上为0的数。