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

负数求余,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,题太简单,没有什么感觉:)

猜你喜欢

转载自www.cnblogs.com/warcraft/p/9361984.html