一、题目
Fraction to Recurring Decimal二、解题
输入分母和分子,然后把结果返回,如果结果有循环把循环部分用括号括起来
个人思考:
1)思考存储两个列表,一个是余数列表numeratorlist ,一个是值的列表valuelist
2)当每次除完,把余数*10再当做除数除以分母(如果出现相同的除数,则代表要开始进行循环了,记录此时的index)
3)每次除完的值放在值的列表里面,根据index插入括号
4)使用sign来记录符号,全部化成正数进行除法
三、尝试与结果
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 #因为list已经添加了整数部分(一个数)和“.”
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
结果:AC
网友评论