Fraction to Recurring Decimal

Posted RenewDo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fraction to Recurring Decimal相关的知识,希望对你有一定的参考价值。

思路:1、对分子为0的可以提前返回

         2、结果为正负的判断

        3、数组越界(最小负数除以-1)

        4、对于遇到小数的开始要加上“.”,有小数后可以扩大被除数,对于是否有重复的地方要判断其被除数是否重复了!!!

对于abs()函数切记,先把数转换为长整型,然后再用abs(),否则最小负数是转换不了正数的!!!

class Solution {
public:
    string fractionToDecimal(int numerator, int denominator) {
        string res;
        if(numerator==0) return "0";
        if((numerator<0)^(denominator<0))
        res+="-";
        long long n=numerator;
        long long d=denominator;
        n=abs(n);
        d=abs(d);
        unordered_map<int,int> rep;
        bool isFract=false;
        while(true)
        {
            if(n<d)
            {
                if(isFract==false)
                {
                    if(res==""||res=="-")
                    res+="0.";
                    else 
                    res+=".";
                    isFract=true;
                }
                  n*=10;
            }
            int r=n-n/d*d;
            if(r==0)
            {
               res+=to_string(n/d);
               return res;
            }
            else
            {
                if(isFract==true)
                {
                    if(rep.find(n)==rep.end())
                     {
                         res+=to_string(n/d);
                         rep[n]=res.size()-1;
                     }
                     else
                     {
                         int pos=rep[n];
                         res=res.substr(0,pos)+"("+res.substr(pos)+")";
                         return res;
                     }
                }
                else
                 res+=to_string(n/d);
                 n=r;
            }
            
        }
    }
};

 

以上是关于Fraction to Recurring Decimal的主要内容,如果未能解决你的问题,请参考以下文章

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal