您的位置:首页 > 编程语言 > Python开发

利用python 完成 leetcode 166 分数到小数

2019-03-21 23:46 411 查看

给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。

如果小数部分为循环小数,则将循环的部分括在括号内。

示例 1:

输入: numerator = 1, denominator = 2
输出: “0.5”
示例 2:

输入: numerator = 2, denominator = 1
输出: “2”
示例 3:

输入: numerator = 2, denominator = 3
输出: “0.(6)”
思路
数组l储存结果,为了方便计算,
当numerator <denominator 时numerator =numerator *10
否则numerator=numerator %denominator
l.append(numerator //denominator )
用字典q储存每个对应numerator 除以 denominator 的结果q[numerator]=numerator //denominator
当当前numerator 已在字典中出现过时,表示已经有一段循环了,将这一段用括号括起来

代码

def fractionToDecimal(self, numerator, denominator):
if(numerator<0 and denominator<0):numerator,denominator=-numerator,-denominator
u=(numerator<0)^(denominator<0)
a=abs(numerator)
b=abs(denominator)
a=a%b
if(a==0):return str(numerator//denominator)
s=str(abs(numerator)//b)+'.'#计算整数部分
q={}
l=[]
while(a<b):
a=a*10
l.append(a)
q[a]=a//b
a=a%b*10
while(a not in q and a!=0):#a in q时表示已经有一段循环了,当前位置是循环的结尾
l.append(a)
q[a]=a//b
a=a%b
a=a*10
for i in range(0,len(l)):
if(a==l[i]):s=s+'('
s=s+str(q[l[i]])
if('(' in s ):s=s+')'
if(u):s='-'+s
return s
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: