LeetCode 7 Reverse Integer & int

Reverse Integer

想用余10直接算,没想到

-123%107, 原因 -123-(-123//10*10)

r=a-n*[a/n]
以上,r是余数,a是被除数,n是除数。 唯一不同点,就是商向0或负无穷方向取整的选择,c从c99开始规定向0取整,python则规定向负无穷取整,选择而已。 所以套用上述公式为:
C 语言:(a%n的符号与a相同)
-9%7=-9 - 7*[-1]=-2;
9%-7=9 - -7*[-1]=2;
Python语言::(a%n的符号与n相同)
-9%7=-9 - 7*[-2]=5
9%-7=-9 - -7*[-2]=-5

by 负数求余,Python和C语言的不同

所以直接存符号吧。

第1次提交
import time

class Solution:
def __init__(self):
self.maxValue=2**31-1
self.minValue=-2**31
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
reverseInt=0 flag=1
if x<0:
flag=-1
x=abs(x) i=0
while x>=1:
reverseInt*=10
reverseInt+=x%10
x//=10
i+=1
#print(reverseInt,x) reverseInt*=flag if reverseInt>self.maxValue or reverseInt<self.minValue:
reverseInt=0
return reverseInt if __name__ == "__main__": data = [
{
"input":123,
"output":321,
},
{
"input":-123,
"output":-321,
},
{
"input":120,
"output":21,
} ];
for d in data: print(d['input']) # 计算运行时间
start = time.perf_counter()
result=Solution().reverse(d['input'])
end = time.perf_counter() print(result)
if result==d['output']:
print("--- ok ---",end="\t")
else:
print("--- error ---",end="\t") print(start-end)

一次AC,题太简单,没有什么感觉:)

上一篇:使用LR编写下载类脚本


下一篇:IplImage, CvMat, Mat 的关系和相互转换(转)