题目描述
给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分放在括号内。
示例
输入:numerator=1,denominator=2
输出:“0.5”
class Solution(object):
def fractionToDecimal(self, numerator, denominator):
"""
:type numerator: int
:type denominator: int
:rtype: str
"""
n,sed=divmod(abs(numerator),abs(denominator))
sign=""
if (numerator//denominator<0):
sign="-"
res=[str(n),"."]
seen=[]
while (sed not in seen):
seen.append(sed)
n,sed=divmod(sed*10,abs(denominator))
res.append(str(n))
index = seen.index(sed)
res.insert(index+2,"(")
res.append(")")
return sign+"".join(res).replace("(0)",'').rstrip(".")
复杂度分析
● 时间复杂度:由于seen数组的长度最多为denominator-1,我们最多执行denominator-1次循环体,因此时间复杂度为[插图]。
● 空间复杂度:由于seen数组的长度最多为denominator-1,因此空间复杂度为[插图]。