166. Fraction to Recurring Decimal

Posted bernieloveslife

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了166. Fraction to Recurring Decimal相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

Leetcode 166 Fraction to Recurring Decimal