[LeetCode By Python] 166. Fraction to Recurring Decimal

一、题目

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容