標籤:pre str close parent while action 長度 put 除法
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