题目描述:
Reverse digits of an integer. Returns 0 when the reversed integer overflows (signed 32-bit integer).
Example
题目思路:
Given x = 123
, return 321
Given x = -123
, return -321
这题主要注意的是sign和overflow的问题,没什么trick,直接上code了。
Mycode(AC = 30ms):
class Solution {
public:
/**
* @param n the integer to be reversed
* @return the reversed integer
*/
int reverseInteger(int n) {
// Write your code here
int sign = n >= 0? 1 : -1;
long long long_n = abs((long long)n);
// get the reversed integer in string
string str_n = to_string(long_n);
reverse(str_n.begin(), str_n.end());
// compute the reversed integer in long long
long_n = 0;
for (int i = 0; i < str_n.length(); i++) {
long_n = long_n * 10 + int(str_n[i]) - int('0');
if (abs(long_n) >= abs((long long)INT_MIN)) {
return 0;
}
}
// return values
long_n *= sign;
if (long_n > INT_MAX || long_n < INT_MIN) {
return 0;
}
else {
return (int)long_n;
}
}
};