题目描述
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)"
思路
模拟除法过程。
代码
class Solution {
public:
string fractionToDecimal(int numerator, int denominator) {
if (numerator == 0) return "0";
if (denominator == 0) return "";
string res = "";
if (numerator>0 ^ denominator>0) res += "-";
long long num1 = abs((long long)numerator);
long long num2 = abs((long long)denominator);
res += to_string(num1 / num2);
long long remain = num1 % num2;
if (remain) res += ".";
map<int, int> mp;
while(remain) {
if (mp[remain]) {
res.insert(mp[remain], 1, '(');
res += ")";
break;
}
mp[remain] = res.length();
remain *= 10;
res += to_string(remain / num2);
remain = remain % num2;
}
return res;
}
};
参考链接:https://www.liuchuo.net/archives/3142