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
    }
};
posted @ 2025-07-01 17:17  saulstavo  阅读(12)  评论(0)    收藏  举报