美文网首页
[LeetCode By Python] 166. Fracti

[LeetCode By Python] 166. Fracti

作者: 乐乐可爱睡觉 | 来源:发表于2016-06-13 11:27 被阅读56次

    一、题目

    Fraction to Recurring Decimal

    二、解题

    输入分母和分子,然后把结果返回,如果结果有循环把循环部分用括号括起来

    个人思考:
    1)思考存储两个列表,一个是余数列表numeratorlist ,一个是值的列表valuelist
    2)当每次除完,把余数*10再当做除数除以分母(如果出现相同的除数,则代表要开始进行循环了,记录此时的index)
    3)每次除完的值放在值的列表里面,根据index插入括号
    4)使用sign来记录符号,全部化成正数进行除法

    三、尝试与结果

    class Solution(object):
        def fractionToDecimal(self, numerator, denominator):
            sign = 1 if numerator*denominator >= 0 else -1
            numerator = abs(numerator)
            denominator = abs(denominator)
            numeratorlist = []
            valuelist = []
            indexValue = -1
            div,mod = divmod(numerator, denominator)
            if mod == 0:
                return str(div * sign)
            valuelist.append(div)
            valuelist.append(".")
            mod = mod * 10
            while True:
                numeratorlist.append(mod)
                div,mod = divmod(mod, denominator)
                valuelist.append(div)
                mod = mod * 10
                if mod in numeratorlist:
                    indexValue = numeratorlist.index(mod) + 2 #因为list已经添加了整数部分(一个数)和“.”
                    break
                if mod == 0:
                    break
            if indexValue != -1:
                valuelist.append(")")
                valuelist.insert(indexValue,"(")
            if (sign < 0):
                valuelist.insert(0,"-")
            resultStr = ''.join(map(str,valuelist))
            return resultStr
    

    结果:AC

    相关文章

      网友评论

          本文标题:[LeetCode By Python] 166. Fracti

          本文链接:https://www.haomeiwen.com/subject/wtdydttx.html