leetcode 166 分數到小數

2021-10-08 20:35:37 字數 2367 閱讀 1591

166. 分數到小數

給定兩個整數,分別表示分數的分子 numerator 和分母 denominator,以字串形式返回小數。

如果小數部分為迴圈小數,則將迴圈的部分括在括號內。

示例 1:

輸入: numerator = 1, denominator = 2

輸出: 「0.5」

示例 2:

輸入: numerator = 2, denominator = 1

輸出: 「2」

示例 3:

輸入: numerator = 2, denominator = 3

輸出: 「0.(6)」

class

solution

:def

fractiontodecimal

(self, numerator:

int, denominator:

int)

->

str:

if numerator ==0:

return

"0" out =

if(numerator >0)

^(denominator >0)

:#判斷正負

'-')

numerator, denominator =

abs(numerator)

,abs

(denominator)

#知道正負之後就可以變成正數計算

#接下來就是有小數系列

a, b =

divmod

(numerator, denominator)

str(a)

)if b ==0:

return

"".join(out)

'.')

loc =

#記錄餘數的位置,

while b:

b *=

10 a, b =

divmod

(b, denominator)

#餘數乘以10再除

str(a)

)if b in loc:

#之前有餘數的記錄,說明出現迴圈,注意這裡括號應該插入到之前的位置

out.insert(loc[b]

,'('

)#如果一開始就使用字串的話不能修改插入

')')

break

loc[b]

=len

(out)

return

"".join(out)

使用字串插入:

class

solution

:def

fractiontodecimal

(self, numerator:

int, denominator:

int)

->

str:

if numerator ==0:

return

"0" res =

""# 首先判斷結果正負, 異或作用就是 兩個數不同 為 true 即 1 ^ 0 = 1 或者 0 ^ 1 = 1

if(numerator >0)

^(denominator >0)

: res +=

"-" numerator, denominator =

abs(numerator)

,abs

(denominator)

# 判讀到底有沒有小數

a, b =

divmod

(numerator, denominator)

res +=

str(a)

# 無小數

if b ==0:

return res

res +=

"."# 處理餘數

# 把所有出現過的餘數記錄下來

loc =

while b:

b *=

10 a, b =

divmod

(b, denominator)

res +=

str(a)

# 餘數前面出現過,說明開始迴圈了,加括號

if b in loc:

res = res[

:loc[b]]+

'('+ res[loc[b]:]

# res.insert(loc[b], "(")

res +=

")"break

# 在把該位置的記錄下來

loc[b]

=len

(res)

return res

Leetcode 166 分數到小數

給定兩個整數,分別表示分數的分子 numerator 和分母 denominator,以字串形式返回小數。如果小數部分為迴圈小數,則將迴圈的部分括在括號內。示例 1 輸入 numerator 1,denominator 2輸出 0.5 示例 2 輸入 numerator 2,denominator ...

leetcode166 分數到小數

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