[leetcode 7] Reverse Integer

本文介绍了一种用于反转整数的算法实现,并考虑了溢出情况的处理。通过两个示例展示了正数和负数反转的过程,同时提供了C语言的具体代码实现。

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

[Solution]

需要考虑:如果给出数据的逆置溢出,如何处理?

 1 int reverse(int x) 
 2     {
 3         long long int original = x;
 4         int flag = x > 0 ? 1 : -1;
 5         original *= flag;
 6         long long int rx = 0;
 7         
 8         while (original != 0)
 9         {
10             rx = rx * 10 + original % 10;
11             original /= 10;
12         }
13         rx = rx * flag;
14         
15         if ((flag > 0 && rx > INT_MAX) || (flag < 0 && rx < INT_MIN))     
16             return 0;
17         return (int)rx;
18     }

在C语言中,除法采用向零取整,即舍去小数部分,因此又称截断取整。

此时 (-a)/b == -(a/b)始终成立。

等式: a ÷ b = c … r

r = a - b * c 始终成立,可知对于负数取模运算,r的符号和a一致。

 

 1 int reverse(int x) 
 2     {
 3         long long int rx = 0;
 4         while (x != 0)
 5         {
 6             rx = rx * 10 + x % 10;
 7             x /= 10;
 8         }
 9         if (rx > INT_MAX || rx < INT_MIN)      
10             return 0;
11         return (int)rx;
12     }

 

转载于:https://www.cnblogs.com/ym65536/p/4082879.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值