LeetCode-166- Fraction to Recurring Decimal

Posted 无名路人甲

tags:

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

算法描述:

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.

Example 1:

Input: numerator = 1, denominator = 2
Output: "0.5"

Example 2:

Input: numerator = 2, denominator = 1
Output: "2"

Example 3:

Input: numerator = 2, denominator = 3
Output: "0.(6)"

解题思路:模拟题。需要注意的点:1 正负号,2 溢出 ,3 小数点 ,4利用unordered_map判断重复

    string fractionToDecimal(int numerator, int denominator) {
        if(numerator==0) return "0";
        string res = "";
        if((numerator <0 && denominator > 0 ) || (numerator >0 && denominator <0)) res += "-";
        
        long long num1 = llabs(numerator);
        long long num2 = llabs(denominator);
        
        res += to_string(num1/num2);
        
        long long mo = num1%num2;
        
        
        if(mo == 0) return res;
        
        res += ".";
        
        unordered_map<int,int> unmap;
        
        while(mo > 0){
            if(unmap.find(mo)!=unmap.end()){
                res.insert(unmap[mo],1,();
                res += ")";
                break;
            }
            unmap[mo]=res.size();
            
            res += to_string(mo*10 / num2);
            mo = mo*10 % num2;
        }
        return res;
    }

 

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

LeetCode 166. Fraction to Recurring Decimal

LeetCode 166. Fraction to Recurring Decimal(模拟)

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal

166. Fraction to Recurring Decimal