一、題目

Fraction to Recurring Decimal
二、解題
輸入分母和分子,然后把結(jié)果返回,如果結(jié)果有循環(huán)把循環(huán)部分用括號(hào)括起來(lái)
個(gè)人思考:
1)思考存儲(chǔ)兩個(gè)列表,一個(gè)是余數(shù)列表numeratorlist ,一個(gè)是值的列表valuelist
2)當(dāng)每次除完,把余數(shù)*10再當(dāng)做除數(shù)除以分母(如果出現(xiàn)相同的除數(shù),則代表要開始進(jìn)行循環(huán)了,記錄此時(shí)的index)
3)每次除完的值放在值的列表里面,根據(jù)index插入括號(hào)
4)使用sign來(lái)記錄符號(hào),全部化成正數(shù)進(jìn)行除法
三、嘗試與結(jié)果
class Solution(object):
def fractionToDecimal(self, numerator, denominator):
sign = 1 if numerator*denominator >= 0 else -1
numerator = abs(numerator)
denominator = abs(denominator)
numeratorlist = []
valuelist = []
indexValue = -1
div,mod = divmod(numerator, denominator)
if mod == 0:
return str(div * sign)
valuelist.append(div)
valuelist.append(".")
mod = mod * 10
while True:
numeratorlist.append(mod)
div,mod = divmod(mod, denominator)
valuelist.append(div)
mod = mod * 10
if mod in numeratorlist:
indexValue = numeratorlist.index(mod) + 2 #因?yàn)閘ist已經(jīng)添加了整數(shù)部分(一個(gè)數(shù))和“.”
break
if mod == 0:
break
if indexValue != -1:
valuelist.append(")")
valuelist.insert(indexValue,"(")
if (sign < 0):
valuelist.insert(0,"-")
resultStr = ''.join(map(str,valuelist))
return resultStr
結(jié)果:AC