题目:
给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。
如果小数部分为循环小数,则将循环的部分括在括号内。
如果存在多个答案,只需返回 任意一个 。
对于所有给定的输入,保证 答案字符串的长度小于 10^4 。
解答:
class Solution:
def fractionToDecimal(self, numerator: int, denominator: int) -> str:
if numerator%denominator==0:
return str(numerator//denominator)
res=[]
if (numerator>0) ^ (denominator>0):
res.append('-')
a,b=abs(numerator),abs(denominator)
res.append(a//b)
res.append('.')
r=a%b
i=len(res)
dic={}
#模拟除法操作
while r!=0 and r not in dic:
dic[r]=i
res.append(r*10//b)
r=r*10%b
i+=1
if r!=0:
res.insert(dic[r],'(')
res.append(')')
return ''.join(map(str,res))