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.
For example,
- Given numerator = 1, denominator = 2, return "0.5".
- Given numerator = 2, denominator = 1, return "2".
- Given numerator = 2, denominator = 3, return "0.(6)".
Credits:
Special thanks to @Shangrila for adding this problem and creating all test cases.
class Solution {
public:
string fractionToDecimal(int numerator, int denominator) {
long long a = numerator;
long long b = denominator;
if (b == 0) {
return "";
}
if (a == 0) {
return "0";
}
string res = "";
if ((numerator^denominator)>>31) {
res += '-';
a = abs(a);
b = abs(b);
}
long long q = a/b;
if (q == 0) {
res += "0";
} else {
res += to_string(q);
if (a%b == 0) {
return res;
}
a -= q*b;
}
res += ".";
unordered_map<long long, int> mapping;
while (a) {
if (mapping.find(a) != mapping.end()) {
res.insert(mapping[a], 1, '(');
res += ")";
break;
}
mapping[a] = res.size();
a = a * 10;
res += to_string(a/b);
a = a%b;
}
return res;
}
};
本文介绍了一个算法,该算法接收两个整数作为输入,分别代表一个分数的分子和分母,并返回该分数的小数形式。如果小数部分为循环节,则会使用括号标记循环部分。
289

被折叠的 条评论
为什么被折叠?



