2种解法:分数转化为小数形式

这篇博客介绍了如何将分数转化为小数形式,提供了两种解法:利用字典/哈希表和线性表List。通过数值相除,结合字典记录分子出现位置来判断循环小数,对于负数和异号情况进行了处理。示例展示了不同分数转换成小数的结果,如 0.5, 2 和 0.(6)。" 112067124,10539212,Mac全景图像拼接:使用PhotoStitcher轻松制作,"['图像处理', '全景照片', 'matlab图像拼接', 'Mac应用', '照片编辑']
摘要由CSDN通过智能技术生成


题目

给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。

如果小数部分为循环小数,则将循环的部分括在括号内。

示例 1:

输入: numerator = 1, denominator = 2
输出: “0.5”
示例 2:

输入: numerator = 2, denominator = 1
输出: “2”
示例 3:

输入: numerator = 2, denominator = 3
输出: “0.(6)”


解法一(字典/哈希表)

思路:直接使用数值相除进行求解,如果不够除就乘以10,然后结果补0,不过为了防止溢出使用了long。

  1. 把负数转换为正数进行求解,如果是异号,给结果字符串增加负号
  2. 先对整数部分求解,整数部分直接相除后把字符串结果保存起来
  3. 小数部分,每次使用字典记录分子出现过的索引位置,如果分子再次出现则表示是循环小数,那么再分子上一次出现的位置和字符串结尾插入括号
public class Solution {
   
    public string FractionToDecimal(int numerator, int denominator) {
   
        long n = numerator,m=denominator;
        long nChild;
        if(n == 0) return "0";
        List<char> r = new List<char>();
        Dictionary<long,int> nIdx = new Dictionary<long,int>();
        if(n < 0 && m > 0 || n > 0 && m < 0) r.Add('-')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放羊郎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值