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)".
class Solution
{
public:
string fractionToDecimal(int numerator, int denominator)
{
if(numerator==0)
return "0";
long num1=fabs(numerator);
long num2=fabs(denominator);
int flag=(numerator>0^denominator>0)?1:0;
string ans=flag?"-":"";
ans+=to_string(num1/num2);
if(num1%num2==0)
return ans;
unordered_map<int ,int>hash;
num1=num1%num2;
ans+=".";
while(!hash.count(num1))
{
hash[num1]=ans.size();
num1*=10;
ans+=to_string(num1/num2);
if(num1%num2==0)
return ans;
num1=num1%num2;
}
int len=ans.size();
ans.insert(hash[num1], 1, '(');
ans += ')';
return ans;
}
};
本文介绍了一个C++程序,该程序可以将任意两个整数表示的分数转换为字符串格式的小数。如果小数部分存在循环节,则会在循环部分使用括号进行标记。例如,输入分子2和分母3时,输出结果为“0.(6)”。文章提供了完整的代码实现。
392

被折叠的 条评论
为什么被折叠?



