7. Reverse Integer
1 负数对正数求余数和商:
-10/3 = -3 -10%3 = -1
class Solution {
public:
int reverse(int x) {
//防止越界
long result = 0;
int num = abs(x);
while (num)
{
result= (result * 10) + num%10;
num=num / 10;//往右移动一位
}
//if (result > (long)INT_MAX|| result < (long)INT_MIN) return 0;
if (result > (long)0x7FFFFFFF|| result < (long)0x80000000) return 0;
if (x<0) return 0-(int)result;
else return (int)result;
}
};
改进版:
public int reverse(int x) {
long rev= 0;
while( x != 0){
rev= rev*10 + x % 10;
x= x/10;
//溢出判断的位置
if( rev > Integer.MAX_VALUE || rev < Integer.MIN_VALUE)
return 0;
}
return (int) rev;
}
9. Palindrome Number
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) return false;
int div = 1;
while (x/div >= 10)
div *= 10;
while (x) {
int high = x / div;
int low = x % 10;
if (high != low) return false;
x = (x % div) / 10;
div = div / 100;
}
return true;
}
};
直接跌倒的版本:
class Solution {
public:
bool isPalindrome(int x) {
if(x<0|| (x!=0 &&x%10==0)) return false;
int sum=0;
while(x>sum)
{
sum = sum*10+x%10;
x = x/10;
}
return (x==sum)||(x==sum/10);
}
};