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