leetcode7 整数反转
题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
注意: 如果反转后整数溢出那么就返回 0。
算法思路
使用一个64位的long long类型来存储结果整数,避免反转后结果溢出报错,最后判断反转后整数与INT_MAX和INT_MIN进行比较即可。
代码实现
#include<iostream>
using namespace std;
int reverse(int x);
int main(){
cout << INT_MAX << endl;
cout << reverse(INT_MAX) << endl;
cout << INT_MIN << endl;
cout << reverse(INT_MIN) << endl;
cout << reverse(12345678) << endl;
cin.get();
return 0;
}
int reverse(int x) {
long long res = 0; //long long 为64位,long与int一样是32位。
do{
res = res * 10 + x % 10;
}while (x /= 10);
return (res > INT_MAX || res < INT_MIN) ? 0 : res;
}