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