給定兩個整數,分別表示分數的分子 numerator 和分母 denominator,以字串形式返回小數。
如果小數部分為迴圈小數,則將迴圈的部分括在括號內。
示例 1:
輸入: numerator = 1, denominator = 2
輸出: 「0.5」
示例 2:
輸入: numerator = 2, denominator = 1
輸出: 「2」
示例 3:
輸入: numerator = 2, denominator = 3
輸出: "0.(6)"
1.先判斷符號;2.再處理整數部分;3.用乙個dict記錄除數是否出現過來找迴圈起始點:
class
solution
:def
fractiontodecimal
(self, numerator:
int, denominator:
int)
->
str:
res =
if numerator*denominator <0:
# 先判斷符號
'-')
numerator, denominator =
abs(numerator)
,abs
(denominator)
int_part = numerator // denominator
str(int_part)
) remainder = numerator % denominator
ifnot remainder:
return
''.join(res)
else
: remainder = remainder*
10'.'
) records =
# 記錄除數是否出現過
while
true
: int_part, left = remainder // denominator, remainder % denominator
if remainder in records:
# 注意這裡是除數
circle_index = records[remainder]
# 迴圈起始點
return
''.join(res[
:circle_index])+
'('+
''.join(res[circle_index:])
+')'
records[remainder]
=len
(res)
if remainder ==0:
# 如果餘數為0說明除盡了
return
''.join(res)
str(int_part)
)# 注意要後加
remainder = left*
10
Leetcode 166 分數到小數
給定兩個整數,分別表示分數的分子 numerator 和分母 denominator,以字串形式返回小數。如果小數部分為迴圈小數,則將迴圈的部分括在括號內。示例 1 輸入 numerator 1,denominator 2輸出 0.5 示例 2 輸入 numerator 2,denominator ...
LeetCode 166 分數到小數
給定兩個整數,分別表示分數的分子 numerator 和分母 denominator,以字串形式返回小數。如果小數部分為迴圈小數,則將迴圈的部分括在括號內。示例 1 輸入 numerator 1,denominator 2輸出 0.5 示例 2 輸入 numerator 2,denominator ...
Leetcode 166 分數到小數
給定兩個整數,分別表示分數的分子 numerator 和分母 denominator,以字串形式返回小數。如果小數部分為迴圈小數,則將迴圈的部分括在括號內。示例 1 輸入 numerator 1,denominator 2 輸出 0.5 示例 2 輸入 numerator 2,denominator...