我正在磨一些LeetCode的东西,其中一个问题是要反转整数的数字(例如123变成321)。你知道吗
我想到了两种方法。第一个是纯“数字”,使用10的幂和模运算:
def reverse_digits1(num):
reversed_num = 0
while num > 0:
reversed_num *= 10
reversed_num += num % 10
num = num // 10
return reversed_num
第二种方法是使用内置的str()
和int()
方法。你知道吗
def reverse_digits2(num):
num = str(num)
return int(num[::-1])
实际上是将其转换为字符串,将其反转,然后将反转后的字符串作为整数返回。你知道吗
在这两种方法之间,哪种方法“更好”呢?我猜这是第一个,它不涉及到将数字变异成字符串,反之亦然,而且没有潜在的信息丢失?会不会有信息丢失?输入都是整数,所以不需要担心浮点数,对吧?你知道吗
一般来说,通过str()
和int()
处理数字是个好主意,还是应该坚持使用“数值方法”?你知道吗
我添加了负片,以防你可能需要它们,但是没有它们,整体性能也不会有很大的变化。你知道吗
这导致
所以除了可读性更好之外,它实际上也更快。你知道吗
至于信息丢失,我无法想象用正则整数, 即使它是浮点数或其他类型的数字,字符串也会更可靠,因为作为一个非常基本的例子,字符串中的0.1+02==0.3000000000000001,但是您可以以一定的精度操纵它们。你知道吗
*请记住,代码是为供人类阅读而编写的。你知道吗
相关问题 更多 >
编程相关推荐