题目描述:
主要思路:
主要是模拟长除法,但是一个难点就是找到循环的部分,具体细节见代码。
class Solution {
public:
string fractionToDecimal(long long numerator, long long denominator) {
if(numerator%denominator==0)
return to_string(numerator/denominator);
string ans="";
if(numerator*denominator<0)
ans+='-';
numerator=abs(numerator);
denominator=abs(denominator);
ans+=to_string(numerator/denominator)+'.';
numerator%=denominator;
unordered_map<int,int> book;
while(numerator!=0)
{
book[numerator]=ans.length();
numerator*=10;
ans+=to_string(numerator/denominator);
numerator%=denominator;
// 判断循环
if(book.count(numerator))
{
ans.insert(ans.begin()+book[numerator],'(');
ans+=')';
break;
}
}
return ans;
}
};