原题链接:7. 整数反转 - 力扣(LeetCode)

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

提示:

  • -231 <= x <= 231 - 1

题目本身不难,但是有坑,emmmm,要防止溢出问题,这边没对示例三有一个过多说明,没必要,字符串类型转换到longlong类型后默认开头的0删除了的

class Solution {
public:
    int reverse(int x) {
        string num=to_string(x);
        if(num[0]=='-'){
            std::reverse(num.begin()+1,num.end());//前面加了std是因为函数名的问题,在力扣模式下要加这个才能正常使用reverse函数
        }else{
            std::reverse(num.begin(),num.end());
        }
        long long result=stoll(num);//使用stoll函数将字符串转换为longlong型数据
        if(result>INT_MAX || result<INT_MIN){//溢出则返回0
            return 0;
        }
        return (int)result;
    }
};

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐