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).
摹拟小数除法,狂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; } };