Leetcode 166 分数到小数

题目

代码分析

需要注意的就是特殊情况的判断以及循环小数的处理问题,这里我们通过map,不断的记录每一次运算的余数,如果有余数是相同的话,这样的话,就会产生循环小数

代码实现

public static String fractionToDecimal(int numerator, int denominator){
        if(numerator==0) return "0";
        StringBuilder sb=new StringBuilder();
        if(numerator<0^denominator<0)
        {
            sb.append("-");
        }
        Long n=Math.abs(Long.valueOf(numerator));
        Long d=Math.abs(Long.valueOf(denominator));
        long first=n/d;
        sb.append(first);
        n=n%d;
        if(n==0)
        {
            return sb.toString();
        }
        sb.append(".");
        HashMap<Long,Integer> map=new HashMap<>();
        while(n!=0)
        {
            if(map.containsKey(n))
            {
                sb.insert(map.get(n),"(");
                sb.append(")");
                break;
            }
            map.put(n,sb.length());
            n*=10;
            sb.append(n/d);
            n=n%d;
        }
        return sb.toString();
    }

学习情况

1次

全部评论

相关推荐

点赞 评论 收藏
分享
09-19 12:15
门头沟学院 Java
迷茫的大四🐶:这下是真的打牌了,我可以用感谢信和佬一起打牌吗
点赞 评论 收藏
分享
09-08 17:17
同济大学 Java
狗不理fe:里面的人劝一句,别来虾,我们部门24校招生淘汰率30%,还有一些人说有一年保护期,不可能!!!
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务