int 小数_[LeetCode] 166. 分数到小数
生活随笔
收集整理的這篇文章主要介紹了
int 小数_[LeetCode] 166. 分数到小数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述 : https://leetcode-cn.com/problems/fraction-to-recurring-decimal/
題目描述:
給定兩個(gè)整數(shù),分別表示分?jǐn)?shù)的分子 numerator 和分母 denominator,以字符串形式返回小數(shù)。
如果小數(shù)部分為循環(huán)小數(shù),則將循環(huán)的部分括在括號(hào)內(nèi)。
示例:
示例 1:
輸入: numerator = 1, denominator = 2 輸出: "0.5"示例 2:
輸入: numerator = 2, denominator = 1 輸出: "2"示例 3:
輸入: numerator = 2, denominator = 3 輸出: "0.(6)"思路:
這種題有幾種情況
解決方法,
詳細(xì)解釋在代碼里, 很好理解!
Python 用起來(lái)很爽, 但是 Java 要考慮負(fù)數(shù)轉(zhuǎn)正數(shù) possible overflow!
代碼:
class Solution:def fractionToDecimal(self, numerator: int, denominator: int) -> str:if numerator == 0: return "0"res = []# 首先判斷結(jié)果正負(fù), 異或作用就是 兩個(gè)數(shù)不同 為 True 即 1 ^ 0 = 1 或者 0 ^ 1 = 1if (numerator > 0) ^ (denominator > 0):res.append("-")numerator, denominator = abs(numerator), abs(denominator)# 判讀到底有沒(méi)有小數(shù)a, b = divmod(numerator, denominator)res.append(str(a))# 無(wú)小數(shù)if b == 0:return "".join(res)res.append(".")# 處理余數(shù)# 把所有出現(xiàn)過(guò)的余數(shù)記錄下來(lái)loc = {b: len(res)}while b:b *= 10a, b = divmod(b, denominator)res.append(str(a))# 余數(shù)前面出現(xiàn)過(guò),說(shuō)明開(kāi)始循環(huán)了,加括號(hào)if b in loc:res.insert(loc[b], "(")res.append(")")break# 在把該位置的記錄下來(lái)loc[b] = len(res)return "".join(res)同步更新博客:
一起刷LeetCode - 威行天下 - 博客園?www.cnblogs.com總結(jié)
以上是生活随笔為你收集整理的int 小数_[LeetCode] 166. 分数到小数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iis 跨域_织梦会员登录二级域名不能跨
- 下一篇: 扩展分区转主分区的方法(MBR分区表详解