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,
摹拟小数除法,狂WA不止,还是不够细!
1. 斟酌结果正负,
2. 全部转为正数,由于负数会不便于中间处理,
3.用map保存余数和商对应位置的关系,出现重复余数直接插入括号结束.
4. 用longlong,INT_MIN变成正值会炸
5. 我用stringstream进行数转string,看到有人这么做:
res += to_string(integral); 学到了
class Solution { public: string fractionToDecimal(int numerator1, int denominator1) { long long numerator = numerator1>0 ? numerator1 : -(long long)numerator1; long long denominator = denominator1>0 ? denominator1 : -(long long)denominator1; string res; stringstream s; s << numerator / denominator; s >> res; if((long long)numerator1 * denominator1 < 0) res='-'+res; numerator = numerator % denominator; if(numerator) { res+="."; unordered_map<int, int> mp; while(numerator) { if(mp.find(numerator) != mp.end()) { res.insert(mp[numerator], 1, '('); res += ")"; break; } mp[numerator] = res.size(); numerator*=10; int digit = numerator / denominator; numerator%=denominator; string add; stringstream ss; ss << digit; ss >> add; res += add; } } return res; } };
上一篇 厦门java培训学费为什么那么贵