博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode166. Fraction to Recurring Decimal
阅读量:4222 次
发布时间:2019-05-26

本文共 2003 字,大约阅读时间需要 6 分钟。

Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.

If the fractional part is repeating, enclose the repeating part in parentheses.

For example,

Given numerator = 1, denominator = 2, return “0.5”.

Given numerator = 2, denominator = 1, return “2”.
Given numerator = 2, denominator = 3, return “0.(6)”.
Credits:
Special thanks to @Shangrila for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

思路

几个注意点:
正负号问题,numerator=0问题
解法是使用两个字典,一个字典key=余数,value=下一个相除结果
另外一个字典key=余数,value=当前的位置,同时计算时用一个列表将结果一一加入
余数==0或者余数已经在字典1中出现,则当前位置以前的序列是括号外面的字符串,当前位置以后是括号里面的字符串
注意一些细节,比如temp要重新赋值等等~~

class Solution(object):    def fractionToDecimal(self,numerator,denominator):        if (numerator>=0 and denominator>0) or (numerator<=0 and denominator<0):            flag=1        else:            flag=0        numerator=abs(numerator)        denominator=abs(denominator)        intenger=numerator/denominator        remainder=numerator%denominator        if remainder==0:            if not flag:                ss='-'+str(intenger)            else:                ss=str(intenger)            return ss        doc={}        ans=[]        id1={}        i=0        while remainder!=0 and remainder not in doc:            temp=remainder*10/denominator            doc.setdefault(remainder,temp)            id1.setdefault(remainder,i)            i=i+1            ans.append(str(temp))            remainder=remainder*10%denominator        temp=remainder*10/denominator        if  remainder:            t1="".join([ans[i] for i in range(id1[remainder])])            t2="".join([ans[i] for i in range(id1[remainder],len(ans))])            if t1:                s=str(intenger)+'.'+t1+'('+t2+')'            else:                s=str(intenger)+'.('+t2+')'         else:            ss="".join([ans[i] for i in range(len(ans))])            s=str(intenger)+'.'+ss        if not flag:            s='-'+s        return s

转载地址:http://mwqmi.baihongyu.com/

你可能感兴趣的文章
【屌丝程序的口才逆袭演讲稿50篇】第五篇:不要给自己找任何借口【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第七篇:请留意我们身边的风景 【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第八篇:坚持的力量 【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第九篇:春节那些事-过年回家不需要理由【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十一篇:马云乌镇40分钟演讲实录【张振华.Jack】
查看>>
Java并发编程从入门到精通 张振华.Jack --我的书
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十二篇:世界上最快的捷径【张振华.Jack】
查看>>
Conclusion for Resource Management
查看>>
Conclusion for Constructors,Destructors,and Assignment Operators
查看>>
《浪潮之巅》1 AT&T
查看>>
《浪潮之巅》2蓝色巨人 IBM公司
查看>>
《浪潮之巅》3水果公司的复兴
查看>>
《浪潮之巅》4计算机工业的生态链
查看>>
《浪潮之巅》5奔腾的芯 英特尔公司
查看>>
python语言程序设计基础笔记(三)从题目到方案
查看>>
读取txt文件出现出现多余空行问题
查看>>
从理论到实践开发自己的聊天机器人
查看>>
@***装饰器(python)
查看>>
我的2020
查看>>
2.3 WSN的MAC协议
查看>>