166. Fraction to Recurring Decimal
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:
Input: numerator = 1, denominator = 2
Output: "0.5"Example 2:
Input: numerator = 2, denominator = 1
Output: "2"Example 3:
Input: numerator = 2, denominator = 3
Output: "0.(6)"string fractionToDecimal(int numerator, int denominator) {
if (numerator == 0) return "0";
long long num = abs((long long)numerator);
long long den = abs((long long)denominator);
long long out = num / den;
long long rem = num % den;
unordered_map<long long, int> mp;
string res = ((numerator > 0) ^ (denominator > 0)) ? "-" : "";
res += to_string(out);
if (rem == 0) return res;
res += ".";
string s;
int pos = 0;
while (rem != 0) {
if (mp.count(rem)) {
s.insert(mp[rem], "(");
s += ")";
return res + s;
}
mp[rem] = pos;
s += to_string((rem * 10) / den);
rem = (rem * 10) % den;
++pos;
}
return res + s;
}Last updated
Was this helpful?