給定兩個整數,分別表示分數的分子 numerator 和分母 denominator,以字串形式返回小數。
如果小數部分為迴圈小數,則將迴圈的部分括在括號內。
示例 1:
輸入: numerator = 1, denominator = 2
輸出: 「0.5」
示例 2:
輸入: numerator = 2, denominator = 1
輸出: 「2」
示例 3:
輸入: numerator = 2, denominator = 3
輸出: 「0.(6)」
思路:直接使用數值相除進行求解,如果不夠除就乘以10,然後結果補0,不過為了防止溢位使用了long。
把負數轉換為正數進行求解,如果是異號,給結果字串增加負號
先對整數部分求解,整數部分直接相除後把字串結果儲存起來
小數部分,每次使用字典記錄分子出現過的索引位置,如果分子再次出現則表示是迴圈小數,那麼再分子上一次出現的位置和字串結尾插入括號
public
class
solution
n %= m;
if(n >0)
nidx.
add(n, r.count)
; n *=10
; nchild = n/m;
r.add(
(char
)(nchild +
'0'));
if(nchild >0)
}}return
string
.join(""
,r.toarray()
);}}
思路:邏輯跟解法一完全一樣,編碼上做了下面的優化或調整
使用線性表list代替字典dictionary
使用負數代替分母的long,負數可以防止溢位
異號判斷使用異或運算,整數部分最後再合併到結果中
如果沒有小數部分,直接返回,將後面一大段從if中解放出來
public
class
solution
//小數部分
while
(n !=0)
nlist.
add(n)
; n *=10
; nchild =
(int
)( n/m)
; r.
add(
(char
)(nchild +
'0'));
if(nchild >0)
}return strflag + str +
"."+
string
.join(""
,r.toarray()
);}}
**: 迴圈小數轉化為分數
眾所周知迴圈小數是可以轉化為分數的。把迴圈小數轉化為分數一般用極限的方法,比如0.33333.可以看成是0.3 0.03 0.003 這個等比數列的值,然後求等比數列的和,設有n個數,則根據等比數列公式得和為0.3 1 0.1 n 1 0.1 化簡得 1 0.1 n 3,n為無限多個,n趨於無窮大時...
微信小程式轉化為uni app專案
使用指南 由於該專案需要使用npm包管理工具安裝對應的專案包,而npm是隨同nodejs一起安裝的包管理工具,所以接下來我們只需要把node.js安裝配置好即可。node.js 安裝配置詳細教程 使用cmd進入對應的資料夾輸入 npm init命令即可 因為這個包是工具,要求全域性都能使用,所以需要...
微信小程式轉化為uni app專案
思維導航 使用指南 由於該專案需要使用npm包管理工具安裝對應的專案包,而npm是隨同nodejs一起安裝的包管理工具,所以接下來我們只需要把node.js安裝配置好即可。node.js 安裝配置詳細教程 1使用cmd進入對應的資料夾輸入 npm init命令即可 因為這個包是工具,要求全域性都能使...