166. Fraction to Recurring Decimal

Difficulty:
Related Topics:
Similar Questions:

    Problem

    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)" 

    Solution

    /** * @param {number} numerator * @param {number} denominator * @return {string} */ var fractionToDecimal = function(numerator, denominator) { if (denominator === 0) return 'NaN'; var sign = numerator !== 0 && ((numerator > 0) ^ (denominator > 0)); var num = Math.abs(numerator); var de = Math.abs(denominator); var result = sign ? '-' : ''; var map = {}; result += Math.floor(num / de); num %= de; if (num === 0) return result; result += '.'; while (num > 0) { num *= 10; if (map[num] !== undefined) { result = result.substr(0, map[num]) + '(' + result.substr(map[num]) + ')'; break; } else { map[num] = result.length; } result += Math.floor(num / de); num %= de; } return result; }; 

    Explain:

    nope.

    Complexity: