zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 6

    Fraction to Recurring Decimal

    要点:

    • 基本公式:当余数小于除数,那么X10然后继续,这个意思就是小数位的数值表示的是余数相对于除数在10中占几份。
    • 注意小数点左边是不用按位计算的,直接一个除法
    • 如何计算循环部分?因为循环部分只会出现在末尾,直观的想法是最后再把循环位补到字符串结果里。但是这个方法行不通,因为不知道从哪个位置

    注意点:

    • 符号:记录 => 取abs => 取反
    • 如何记录循环:如果remaining已经在map里了,说明之后的计算就是重复之前的
    class Solution(object):
        def fractionToDecimal(self, numerator, denominator):
            """
            :type numerator: int
            :type denominator: int
            :rtype: str
            """
            sign = 1
            if numerator<0:
                sign = -1
                numerator = -numerator
            
            if denominator<0:
                sign = -sign
                denominator = -denominator
            
            q = numerator/denominator
            r = numerator-q*denominator
            hmap = {}
            res = []
            if sign==-1 and (q!=0 or r!=0): res = ["-"]
            res.append(str(q))
            if r>0: res.append(".")
            while r>0:
                print r
                if r in hmap:
                    res.insert(hmap[r],"(")
                    res.append(")")
                    break
                else:
                    hmap[r]=len(res)
                    q = r*10/denominator
                    r = r*10-q*denominator
                    res.append(str(q))
            
            return ''.join(res)
            
    
    
  • 相关阅读:
    LSMW TIPS
    Schedule agreement and Delfor
    Running VL10 in the background 13 Oct
    analyse idoc by creation date
    New Journey Prepare
    EDI error
    CBSN NEWS
    Listen and Write 18th Feb 2019
    Microsoft iSCSI Software Target 快照管理
    通过 Microsoft iSCSI Software Target 提供存储服务
  • 原文地址:https://www.cnblogs.com/absolute/p/5560346.html
Copyright © 2011-2022 走看看