目录
题目描述:
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123 Output: 321
Example 2:
Input: -123 Output: -321
Example 3:
Input: 120 Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
算法实现:
//区分正负整数
//考虑0和-2^31
class Solution {
public:
int reversepositive(int x, bool flag = true){
int length;
int number = x;
length = int(log10(number)) + 1;
int suanz;
long reverse = 0;
for(int i = 0; i < length; i ++)
{
suanz = number%10;
cout << "suanz: " <<suanz << endl;
number = (number - suanz)/10;
cout << "number: " <<number << endl;
reverse += suanz*pow(10,length - i -1);
cout << "reverse: " << reverse << endl;
}
if(reverse > pow(2,31) || (reverse == pow(2,31) && !flag)) return 0;
else return reverse;
}
int reverse(int x) {
if(x == 0) return 0;
else if(x > 0) return reversepositive(x);
else return - reversepositive(- x, false);
}
};