美文网首页
[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