leetcode——166. 分数到小数

class Solution:
    def fractionToDecimal(self, numerator: int, denominator: int) -> str:
        #if denominator==1:
            #return numerator
        if numerator<0:
            numer=-numerator
        else:
            numer=numerator
        if denominator<0:
            deno=-denominator
        else:
            deno=denominator
        n=numer//deno
        e=numer%deno
        if e==0:
            if numerator*denominator<0:
                return '-'+str(n)
            else:
                return str(n)
        res={}
        m=0
        res[e]=10*e//deno
        m=10*e%deno
        while m!=0:
            if m in res:
                r=''
                for i in res.keys():
                    if i!=m:
                        r+=str(res[i])
                    else:
                        r+='('+str(res[i])
                if numerator*denominator<0:
                    return '-'+str(n)+'.'+r+')'
                else:
                    return str(n)+'.'+r+')'
            res[m]=10*m//deno
            m=10*m%deno
        r=''
        for i in res.keys():
            r+=str(res[i])
        if numerator*denominator<0:
            return '-'+str(n)+'.'+str(r)
        else:
            return str(n)+'.'+str(r)
执行用时 :40 ms, 在所有 python3 提交中击败了93.13%的用户
内存消耗 :13.8 MB, 在所有 python3 提交中击败了6.17%的用户
class Solution:
    def fractionToDecimal(self, numerator: int, denominator: int) -> str:
        if denominator==1:
            return str(numerator)
        if numerator<0:
            numer=-numerator
        else:
            numer=numerator
        if denominator<0:
            deno=-denominator
        else:
            deno=denominator
        n=numer//deno
        e=numer%deno
        if e==0:
            if numerator*denominator<0:
                return '-'+str(n)
            else:
                return str(n)
        res={}
        m=0
        res[e]=10*e//deno
        m=10*e%deno
        while m!=0:
            if m in res:
                r=''
                for i in res.keys():
                    if i!=m:
                        r+=str(res[i])
                    else:
                        r+='('+str(res[i])
                if numerator*denominator<0:
                    return '-'+str(n)+'.'+r+')'
                else:
                    return str(n)+'.'+r+')'
            res[m]=10*m//deno
            m=10*m%deno
        r=''
        for i in res.keys():
            r+=str(res[i])
        if numerator*denominator<0:
            return '-'+str(n)+'.'+str(r)
        else:
            return str(n)+'.'+str(r)
执行用时 :36 ms, 在所有 python3 提交中击败了98.51%的用户
内存消耗 :13.8 MB, 在所有 python3 提交中击败了6.17%的用户
 
 
可以自己做出来,但是还是没有很快做出来。。。
  
 
                                                                                        ——2019.10.21

猜你喜欢

转载自www.cnblogs.com/taoyuxin/p/11715322.html