资讯专栏INFORMATION COLUMN

166. Fraction to Recurring Decimal

Fundebug / 441人阅读

摘要:题目解答看的代码如下判断正负性加入整数部分加入小数部分记录下已经出现过的当有重复的时候,即从前一个开始到当前用包含进去

题目:
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)".

解答:
看的discussion, 代码如下:

public String fractionToDecimal(int numerator, int denominator) {
    if (numerator == 0) return "0";
    
    StringBuilder sb = new StringBuilder();
    //判断正负性
    sb.append((numerator > 0) ^ (denominator > 0) ? "-" : "");
    
    long num = Math.abs((long)numerator);
    long deno = Math.abs((long)denominator);
    //加入整数部分
    sb.append(num / deno);
    num %= deno;
    if (num == 0) {
        return sb.toString();
    }
    
    //加入小数部分
    sb.append(".");
    //记录下已经出现过的numerator,当有重复的时候,即从前一个index开始到当前用“()”包含进去
    Map map = new HashMap();
    map.put(num, sb.length());
    while (num != 0) {
        num *= 10;
        sb.append(num / deno);
        num %= deno;
        if (map.containsKey(num)) {
            int index = map.get(num);
            sb.insert(index, "(");
            sb.append(")");
            break;
        } else {
            map.put(num, sb.length());
        }
    }
    return sb.toString();
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64871.html

相关文章

  • [Leetcode] Fraction to Recurring Decimal 分数转为循环小数

    摘要:最新解法及思路哈希表法复杂度时间空间思路整数部分很好处理,只要注意正负号的区分就行了,但是如何处理小数部分呢。这里我们可以用一个哈希表记录每次的余数,如果余数出现重复的时候,说明就产生循环了。 Fraction to Recurring Decimal 最新解法及思路:https://yanjia.me/zh/2018/11/... Given two integers repres...

    desdik 评论0 收藏0
  • [HackerRank] Plus Minus

    Problem Given an array of integers, calculate which fraction of its elements are positive, which fraction of its elements are negative, and which fraction of its elements are zeroes, respectively. Pri...

    leeon 评论0 收藏0
  • Python标准库---10、内置类型:数字类型

    摘要:上一篇文章标准库内置类型逻辑值检测布尔运算比较下一篇文章标准库内置类型迭代器类型序列类型数字类型存在三种不同的数字类型整数浮点数和复数。标准库包含附加的数字类型,如表示有理数的以及以用户定制精度表示浮点数的。 上一篇文章:Python标准库---9、内置类型:逻辑值检测、布尔运算、比较下一篇文章:Python标准库---11、内置类型:迭代器类型、序列类型 数字类型 --- int,...

    NotFound 评论0 收藏0
  • [Learning Python] Chapter 5 Numeric Types

    摘要:,可以用十进制十六进制八进制二进制来表示。由实数虚数组成。,在中,八进制可以以开头,但是在中,不能以开头,一定要以或者开头,位的运算表示位向左移动表示位向右移动表示或运算表示运算表示异或运算两者不同为,相同为可以用方法计算二进制数有多少位。 1, 在Python 2.x 中。Python的integer,有两种类型,normal和long。Normal通常是32位的。Long表示无限精...

    yuxue 评论0 收藏0
  • 【译】 JavaScript中按位操作符的有趣应用

    摘要:检查设定位操作符还有一些其他有用的位屏蔽应用。请注意,位掩码中的位将有效地关闭十进制数中的相应位,因为。 原文标题:Interesting use cases for JavaScript bitwise operators原文地址:https://blog.logrocket.com/in... 本文首发于公众号:符合预期的CoyPan JavaScript提供了几种运算符,可以对...

    oneasp 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<