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:
1 2
| Input: numerator = 1, denominator = 2 Output: "0.5"
|
Example 2:
1 2
| Input: numerator = 2, denominator = 1 Output: "2"
|
Example 3:
1 2
| Input: numerator = 2, denominator = 3 Output: "0.(6)"
|
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| 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; } };
|