leetcode166 分數到小數

2021-09-14 01:55:33 字數 1532 閱讀 5380

給定兩個整數,分別表示分數的分子 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...