7. 整数反转
问题
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
分析
模拟,要么while {int a = x % 10; x /= 10; num = num*10 + a;}类似方法,要么巧用STL写。这里记录一下如何用STL写。显然,不管超不超范围,都可以用字符串存,然后操作,这是很容易想出来的思路。
注意,INT_MIN和INT_MAX属于#include
class Solution {
public:
int reverse(int x) {
string s = to_string(x); // 来源于<string>,与java不同,不是“对象.to_string()”,而是单独用
if (s[0] == '-') {
std::reverse(s.begin()+1, s.end()); // reverse
} else {
std::reverse(s.begin(), s.end());
}
long long res = stol(s); // 来源于<string>
return (res > INT_MAX || res < INT_MIN) ? 0 : res; // INT_MIN和INT_MAX常量来源于climits
}
};

浙公网安备 33010602011771号