Reverse Integer
想用余10直接算,没想到
-123%10
是 7
, 原因 -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
所以直接存符号吧。
第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=" ")
else:
print("--- error ---",end=" ")
print(start-end)
一次AC,题太简单,没有什么感觉:)