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培訓學費為什么那么貴