LeetCode 0166 - Fraction to Recurring Decimal

2021-08-11 14:51:55 浏览数 (1)

Fraction to Recurring Decimal

Desicription

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.

Example 1:

代码语言:javascript复制
Input: numerator = 1, denominator = 2
Output: "0.5"

Example 2:

代码语言:javascript复制
Input: numerator = 2, denominator = 1
Output: "2"

Example 3:

代码语言:javascript复制
Input: numerator = 2, denominator = 3
Output: "0.(6)"

Solution

代码语言:javascript复制
class Solution {
public:
    string fractionToDecimal(long long numerator, long long denominator) {
        if(numerator == 0)
            return "0";
        string res;
        if(numerator < 0 ^ denominator < 0)
            res  = "-";
        numerator = abs(numerator);
        denominator = abs(denominator);
        res  = to_string(numerator / denominator);
        if(numerator % denominator == 0)
            return res;
        res  = ".";
        unordered_map<long long, long long> mp;
        for(long long r = numerator % denominator; r; r %= denominator) {
            if(mp.count(r)) {
                res.insert(mp[r], 1, '(');
                res  = ")";
                return res;
            }
            mp[r] = res.size();
            r *= 10;
            res  = to_string(r / denominator);
        }
        return res;
    }
};

0 人点赞