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; } };
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。