classSolution:deffractionToDecimal(self,numerator:int,denominator:int) ->str:if numerator ==0:return"0" res =""#同号为正,异号位负,用异或实现 res +='-'if (numerator >0) ^ (denominator >0) else'' num =abs(numerator) den =abs(denominator)#整数部分 res +=str(num // den) num %= denif num ==0:return res#小数部分 res +='.'#将小数循环节存入map中#num作为键,值为当前串的长度 hashMap ={}#初始化 hashMap[num]=len(res)#就像竖式除法一样,每次*10(添0)再除while num !=0: num *=10 res +=str(num // den) num %= den#若遇到出现过的被除数,即出现循环节if num in hashMap:#查map得到循环节出现的第一个位置,插入括号 idx = hashMap[num] res = res[:idx]+'('+ res[idx:] res +=')'breakelse:#否则记录map hashMap[num]=len(res)return res