首页 > 其他 > 详细

166. Fraction to Recurring Decimal

时间:2018-10-17 16:15:57      阅读:131      评论:0      收藏:0      [点我收藏+]

Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.

If the fractional part is repeating, enclose the repeating part in parentheses.

Example 1:

Input: numerator = 1, denominator = 2
Output: "0.5"

Example 2:

Input: numerator = 2, denominator = 1
Output: "2"

Example 3:

Input: numerator = 2, denominator = 3
Output: "0.(6)"

class Solution:
    def fractionToDecimal(self, numerator, denominator):
        """
        :type numerator: int
        :type denominator: int
        :rtype: str
        """
        negative = False
        if numerator*denominator<0:
            negative = True
        n,m = abs(numerator),abs(denominator)
        a = n//m
        if a==n/m:
            if negative:
                return ‘-‘+str(a)
            else:
                return str(a)
        temp = []
        res = []
        n = n%m
        while True:
            temp.append(n)
            n *= 10
            res.append(str(n//m))
            n = n%m
            if n==0:
                if negative:
                    return ‘-‘ + str(a) + ‘.‘ + ‘‘.join(res)
                else:
                    return str(a) + ‘.‘ + ‘‘.join(res)
            if n in temp:
                if negative:
                    return ‘-‘ + str(a) + ‘.‘ + ‘‘.join(res[:temp.index(n)]) + ‘(‘ + ‘‘.join(res[temp.index(n):]) + ‘)‘
                else:
                    return str(a) + ‘.‘ + ‘‘.join(res[:temp.index(n)]) + ‘(‘ + ‘‘.join(res[temp.index(n):]) + ‘)‘

刚开始的思路是从商中找出循环体,这样的问题是由于不确定循环体长度和开始的位置,很难判断。但如果用除法的方式,从被除数中找出循环体就很简单了。

166. Fraction to Recurring Decimal

原文:https://www.cnblogs.com/bernieloveslife/p/9803470.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!