32位要进行判断防止溢出,其他操作只是将数字进行位置的调换
#include <iostream>
//1.32位整数进行反转
class Solution {
public:
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX-1)
int reverse(int x) {
int flag = x < 0 ? -1 : 1;
int num=0;
//判断溢出32有符号整数
//从个位到之后数位的提取,依次添加
while (x) {
if ((flag == -1 && (INT_MIN / 10 > num)) || (flag == 1 && INT_MAX / 10 < num)) return 0;
num = num*10+x%10;
x /= 10;
}
return num;
}
};
//2.判断回文数
class Solution_isPalindrome {
public:
bool isPalindrome(int x) {
if (x < 0) {
return false;
}
int ini = x;
int num = 0;
while (x) {
num = num * 10 + x % 10;
x = x / 10;
}
if (ini == num) {
return true;
}
else {
return false;
}
}
};
int main()
{
Solution_isPalindrome* sol = new Solution_isPalindrome();
std::cout << sol->isPalindrome(321);
}