利用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
相关文章推荐
- 利用python 完成 leetcode 17 电话号码的字母组合
- 利用python 完成 leetcode 32 最长有效括号
- 利用python 完成 leetcode 198 打家劫舍
- LeetCode 166 Fraction to Recurring Decimal (从分数到循环小数)(*)
- 利用python 完成 leetcode 100 相同的树
- 【LeetCode】#166分数到小数(Fraction to Recurring Decimal)
- 利用python 完成 leetcode 168 Excel表列名称
- Leetcode 166 Fraction to Recurring Decimal 分数化小数
- leetcode -- 利用python统计string中的频率问题
- 利用python进行数据处理——之完成任务分类
- [Python]利用python爬虫去LeetCode上下载Ac解
- [LeetCode] 167. Fraction to Recurring Decimal 分数转循环小数
- Linux下利用SWIG完成Python对使用OpenCV的C++文件的调用
- python爬虫-利用scrapy框架完成天天书屋内容爬取,并保存本地txt
- python中利用await关键字如何等待Future对象完成详解
- python利用xlrd完成excel中某列检索含有指定字符串的记录
- 《Modern Python Cookbook》(Python编程范例)笔记——1.4 浮点数、小数、分数
- [LeetCode] Fraction to Recurring Decimal 分数转循环小数
- 如何完成循环小数转成分数?
- 利用Python通过频谱分析和KNN完成iphone拨号的语音识别