Fraction to Recurring Decimal LeetCode solution in C++

1
class Solution {
2
public:
3
string fractionToDecimal(int numerator, int denominator) {
4
unordered_map<int, int> umap;
5
string result = "";
6
if ((double)numerator / (double)denominator < 0) result.push_back('-');
7
long long l_numerator = numerator > 0 ? numerator : -(long long)numerator;
8
long long l_denominator = denominator > 0 ? denominator : -(long long)denominator;
9
long long quotient = l_numerator / l_denominator;
10
long long remainder = l_numerator % l_denominator;
11
result.append(to_string(quotient));
12
if (remainder == 0) return result;
13
result.push_back('.');
14
int position = result.size();
15
umap[remainder] = position++;
16
while (remainder != 0) {
17
l_numerator = remainder * 10;
18
quotient = l_numerator / l_denominator;
19
remainder = l_numerator % l_denominator;
20
char digit = '0' + quotient;
21
result.push_back(digit);
22
if (umap.find(remainder) != umap.end()) {
23
result.insert(umap[remainder], 1, '(');
24
result.push_back(')');
25
return result;
26
}
27
umap[remainder] = position++;
28
}
29
return result;
30
}
31
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0