166. Fraction to Recurring Decimal
Read the full problem statement on LeetCode.
Difficulty: medium Acceptance: 26% Topics: Hash Table, Math, String
View full problem on LeetCode Reading material
Reference solution (spoiler · python)
# Time: O(logn), where logn is the length of result strings
# Space: O(1)
class Solution(object):
def fractionToDecimal(self, numerator, denominator):
"""
:type numerator: int
:type denominator: int
:rtype: str
"""
result = ""
if (numerator > 0 and denominator < 0) or (numerator < 0 and denominator > 0):
result = "-"
dvd, dvs = abs(numerator), abs(denominator)
result += str(dvd / dvs)
dvd %= dvs
if dvd > 0:
result += "."
lookup = {}
while dvd and dvd not in lookup:
lookup[dvd] = len(result)
dvd *= 10
result += str(dvd / dvs)
dvd %= dvs
if dvd in lookup:
result = result[:lookup[dvd]] + "(" + result[lookup[dvd]:] + ")"
return result
Solution from kamyu104/LeetCode-Solutions · MIT