整数反转

  1. 整数反转
    1. cpp
    2. 思路
    3. 代码

整数反转

题目地址:整数反转

题目描述:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

cpp

int 的范围

[-2^31,2^31-1]

C中常量INT_MAX和INT_MIN分别表示最大、最小整数,定义在头文件limits.h中。

INT_MAX = 2147483647(2^31-1)
INT_MIN = -2147483648(-2^31)

思路

利用x%10循环取出原数最后一位,作为reverse_num的首位

long long reverse_num=0; //用long long定义反转后的结果
while (x) {
    // 不用考虑x的正负,负数的模为负
    current=x%10; //每次取出x的最后一位,将其当作反转数的第一位
    reverse_num=reverse_num*10+current;
}

代码

class Solution {
public:
    int reverse(int x) {
        long long num=0;
        while(x){
            int current_num=x%10;
            cout<<current_num<<endl;
            num=num*10+current_num;
            if(num<INT_MIN ||num>INT_MAX)&#123;
                return 0;
            &#125;
            x/=10;
        &#125;
        //cout<<num<<endl;
        return num;
    &#125;
&#125;;

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 changzeyan@foxmail.com

×

喜欢就点赞,疼爱就打赏