前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 题目解析之 Fraction to Recurring Decimal

Leetcode 题目解析之 Fraction to Recurring Decimal

原创
作者头像
ruochen
发布2022-01-10 20:18:25
1.2K0
发布2022-01-10 20:18:25
举报

Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.

If the fractional part is repeating, enclose the repeating part in parentheses.

For example,

  • Given numerator = 1, denominator = 2, return "0.5".
  • Given numerator = 2, denominator = 1, return "2".
  • Given numerator = 2, denominator = 3, return "0.(6)".
代码语言:txt
复制
    public String fractionToDecimal(int numerator, int denominator) {
        String sign = "";
        if (Math.signum(numerator) * Math.signum(denominator) < 0) {
            sign = "-";
        }
        long n = Math.abs(numerator);
        long d = Math.abs(denominator);
        String intPart = Math.abs(n / d) + "";
        // 如果整除,直接返回结果
        if (n % d == 0) {
            return sign + intPart;
        }
        // 计算小数部分
        n %= d;
        n *= 10;
        StringBuilder sb = new StringBuilder();
        Map<Long, Integer> mod = new HashMap<Long, Integer>();
        for (int i = 0; n != 0; i++) {
            long q = n / d;
            Integer start = mod.get(n / 10);
            if (start != null) {
                sb.insert(start, "(");
                sb.append(")");
                break;
            }
            sb.append(Math.abs(q));
            mod.put(n / 10, i);
            n %= d;
            n *= 10;
        }
        String fractionalPart = sb.toString();
        return sign + intPart + "." + fractionalPart;
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com