您的位置:首页 > 其它

leetcode(7) reverse integer

2017-07-19 13:51 302 查看

problem

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

Note:

The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

思路

这个题考察的知识点就是利用取模和求余运算获取和添加末位。

public int reverse(int x)
{
int result = 0;

while (x != 0)
{
int tail = x % 10;
int newResult = result * 10 + tail;
if ((newResult - tail) / 10 != result)
{ return 0; }
result = newResult;
x = x / 10;
}

return result;
}


需要注意的是python和c及Java中的除法和取模的区别:

除法

python3中//表示地板除(floor division),即32//10=3, -32//10=-4,而在Java中-32//10=-3

取模和取余

取余,遵循尽可能让商的绝对值小的原则,也就是向0舍入。

取模,遵循尽可能让商小的原则,向负无穷舍入。

在除数和被除数符号相同时两种运算结果相同(因为商是正数所以舍入之后相同)。

python中的%表示的是取模运算,而c和Java中%表示的是取余运算。

class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if x<0:
flag=1
x = -x
else:
flag=0

ans = int(str(x)[::-1])

if flag==1:
x = -x

if x>2147483647 or x<-2147483648:
return 0
else:
return x
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode