关闭

Leetcode159: Fraction to Recurring Decimal

标签: leetcodealgorithm
162人阅读 评论(0) 收藏 举报
分类:

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)".

Solution:

1、用一个map来记录n除以d的过程中被除数的变化,以及当被除数为n时相应的商在返回结果string中的位置,方便以后添加(。

2、负数变正数的时候会越界,下面的例子2^31 = 2 147 483 648,int表示范围(-2147483648~2147483647),所以要用long long:

Input:-1, -2147483648

Output:"0.0000000000000000000000000000001"

Expected:"0.0000000004656612873077392578125"

class Solution {
public:
    string fractionToDecimal(int numerator, int denominator) {
        string res = "";  
        if (numerator == 0) return "0";  
        if (denominator == 0)return res;  
  
        long long n = numerator;  
        long long d = denominator;  
        if ((n < 0 && d > 0) || (n > 0 && d < 0))  
            res = "-";  
        if (n < 0) n = -n;  
        if (d < 0) d = -d;  
        res += to_string(n / d);  
        n = n%d;  
        if (n == 0) return res;  
        res += '.';  
  
        int pos = res.size();  
        map<long long, int> record;  
        while (n != 0) {  
            if (record.find(n) != record.end()) {  
                res.insert(res.begin() + record[n], '(');  
                res += ')';  
                return res;  
            }  
            record[n] = pos;  
            res += char(n * 10 / d + '0');  
            pos++;  
            n = (n * 10) % d;  
        }  
        return res;  
    }
};


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

float,double,decimal彼此转换会出现的精度问题(今天你Bug了吗?)

在一开始先说明下,此处的精度问题并不包含数字过大、强转溢出之类导致的问题,主要说明三者之间比较或计算时容易产生的精度问题,以避免开发中莫名其妙的数据问题。 大学时学的是C语言,虽然就没学会过,但对于f...
  • starfd
  • starfd
  • 2015-03-25 17:12
  • 12788

js 字符串转换成数字的三种方法

方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数...
  • archer119
  • archer119
  • 2016-07-31 09:44
  • 2390

HDU 5912 Fraction 【模拟】 (2016中国大学生程序设计竞赛(长春))

Fraction Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total...
  • u010568270
  • u010568270
  • 2016-10-04 13:27
  • 1080

leetcode -- Fraction to Recurring Decimal

Given two integers representing the numerator and denominator of a fraction, return the fraction in ...
  • isunn
  • isunn
  • 2016-01-05 11:15
  • 458

leetcode 166. Fraction to Recurring Decimal

Given two integers representing the numerator and denominator of a fraction, return the fraction in ...
  • u014568921
  • u014568921
  • 2016-03-06 21:23
  • 281

【leetcode 哈希表】Fraction to Recurring Decimal

leetcode新题,哈希表,Fraction to Recurring Decimal 。题意:给定两个整型数,一个代表分子numerator,一个代表分母denominator,以小数的形式返回它...
  • u012162613
  • u012162613
  • 2014-12-18 02:11
  • 8888

[LeetCode]problem 166. Fraction to Recurring Decimal

TAG循环小数除法 ; Hash记录位置;最小负数的绝对值无法表示!只能提升到更大的类型题目链接方法只说方法:其实很简单,就是把自己手算除法的过程用代码写一遍就好了。我分别处理了结果的整数部分和小数部...
  • x5942110
  • x5942110
  • 2016-06-26 10:59
  • 216

LeetCode(166) Fraction to Recurring Decimal

题目如下: Given two integers representing the numerator and denominator of a fraction, return the fracti...
  • feliciafay
  • feliciafay
  • 2015-01-09 14:16
  • 2200

LeetCode - Fraction to Recurring Decimal

https://leetcode.com/problems/fraction-to-recurring-decimal/ Given two integers representing the n...
  • chilakaka
  • chilakaka
  • 2015-03-30 06:23
  • 155

leetcode Fraction to Recurring Decimal 哈希表

leetcode Fraction to Recurring Decimal 哈希表
  • lifqjdlut
  • lifqjdlut
  • 2015-07-14 13:12
  • 290
    个人资料
    • 访问:78934次
    • 积分:2446
    • 等级:
    • 排名:第17396名
    • 原创:148篇
    • 转载:119篇
    • 译文:0篇
    • 评论:6条
    个人主页
    文章分类
    最新评论