当前位置:网站首页>166. 分数到小数
166. 分数到小数
2022-07-01 03:23:00 【Sun_Sky_Sea】
166. 分数到小数
原始题目链接:https://leetcode.cn/problems/fraction-to-recurring-decimal/
给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。
如果小数部分为循环小数,则将循环的部分括在括号内。
如果存在多个答案,只需返回 任意一个 。
对于所有给定的输入,保证 答案字符串的长度小于 104 。
示例 1:
输入:numerator = 1, denominator = 2
输出:“0.5”
示例 2:
输入:numerator = 2, denominator = 1
输出:“2”
示例 3:
输入:numerator = 4, denominator = 333
输出:“0.(012)”
提示:
-231 <= numerator, denominator <= 231 - 1
denominator != 0
解题思路:
先判断分母是否为0,在判断正负号,然后判断小数是否循环。 使用一个字典来判断小数是否循环,key是余数,value是余数对除数相除的商,即要返回字符串中的数字的对应的索引位置。
代码实现:
class Solution:
def fractionToDecimal(self, numerator: int, denominator: int) -> str:
# 分母为0
if numerator == 0:
return "0"
ans = []
if (numerator > 0) ^ (denominator > 0):
ans.append("-")
numerator, denominator = abs(numerator), abs(denominator)
a, b = divmod(numerator, denominator)
ans.append(str(a))
# 余数为0,表示整除
if b == 0:
return "".join(ans)
# 不整除即有小数,加个小数点
ans.append(".")
# 用一个字典记录小数开始的位置
# key是余数,value是余数做除法后的商对应在ans中的位置
loc = {
b: len(ans)}
# 处理余数
while b:
# 余数相对于除数位数不够做除法,将余数扩大一位,即乘以10
b *= 10
# a是商,b是余数,做了除法更新余数
a, b = divmod(b, denominator)
ans.append(str(a))
# 如果余数在字典中出现过了,表示开始重复循环了
# 依据题意加括号
if b in loc:
ans.insert(loc[b], "(")
ans.append(")")
break
# 记录新的余数做除法后的商对应在ans中的位置
loc[b] = len(ans)
return "".join(ans)
参考文献:
https://leetcode.cn/problems/fraction-to-recurring-decimal/solution/ji-lu-yu-shu-by-powcai/
边栏推荐
- 10、Scanner. Next() cannot read spaces /indexof -1
- Gorilla/mux framework (RK boot): RPC error code design
- 服务器渲染技术jsp
- 数据交换 JSON
- 在线公网安备案保姆级教程【伸手党福利】
- IPv4 and IPv6, LAN and WAN, gateway, public IP and private IP, IP address, subnet mask, network segment, network number, host number, network address, host address, and IP segment / number - what does
- How to achieve 0 error (s) and 0 warning (s) in keil5
- [深度学习]激活函数(Sigmoid等)、前向传播、反向传播和梯度优化;optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理
- Sort linked list (merge sort)
- Jeecgboot output log, how to use @slf4j
猜你喜欢

Listener listener

BluePrism注册下载并安装-RPA第一章

pytorch nn.AdaptiveAvgPool2d(1)

后台系统页面左边菜单按钮和右边内容的处理,后台系统页面出现双滚动

TEC: Knowledge Graph Embedding with Triple Context

Random seed torch in deep learning manual_ seed(number)、torch. cuda. manual_ seed(number)

Ridge regression and lasso regression

后台系统右边内容如何出现滚动条和解决双滚动条的问题

C语言的sem_t变量类型

Unexpected token o in JSON at position 1 ,JSON解析问题
随机推荐
Appium自动化测试基础--补充:C/S架构和B/S架构说明
LeetCode 31下一个排列、LeetCode 64最小路径和、LeetCode 62不同路径、LeetCode 78子集、LeetCode 33搜索旋转排序数组(修改二分法)
Bilinear upsampling and f.upsample in pytorch_ bilinear
Cookie&Session
Pytorch training deep learning network settings CUDA specified GPU visible
【EI会议】2022年国际土木与海洋工程联合会议(JCCME 2022)
The method to measure the similarity of two vectors: cosine similarity, pytorch calculate cosine similarity: torch nn. CosineSimilarity(dim=1, eps=1e-08)
Database DDL (data definition language) knowledge points
Addition without addition, subtraction, multiplication and division
Filter
TEC: Knowledge Graph Embedding with Triple Context
Valentine's Day is nothing.
318. 最大单词长度乘积
Listener listener
What happens when a function is called before it is declared in C?
Download and installation configuration of cygwin
Thread data sharing and security -threadlocal
Leetcode:剑指 Offer 59 - I. 滑动窗口的最大值
不用加减乘除实现加法
在线公网安备案保姆级教程【伸手党福利】