题目:
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)".
分析:
代码:
class Solution {
public:
string fractionToDecimal(int numerator, int denominator) {
if (denominator == 0)return "";
if (numerator == INT_MIN&&denominator == -1)return "2147483648";
long long inte = numerator / denominator,deci = numerator % denominator,i=-1,pos;
int sign = ((numerator > 0) ^ (denominator > 0)) ? -1 : 1;
if (!deci)return to_string(inte);
string t = "";
map<long long, long long> mp;
while (deci) {
if (mp.find(deci) != mp.end()) {
pos = mp[deci];
break;
}
else mp[deci] = ++i;
int subinte = (deci * 10) / denominator;
t += to_string(abs(subinte));
deci = (deci * 10) % denominator;
}
if (deci) {
t.insert(t.begin() + pos, '(');
t.insert(t.end(), ')');
}
string tmp = to_string(abs(inte)) + ".";
t.insert(t.begin(), tmp.begin(),tmp.end());
if (sign == -1)t.insert(t.begin(), '-');
return t;
}
};