[LeetCode By Python] 166. Fraction to Recurring Decimal

一、題目

Fraction to Recurring Decimal

二、解題

輸入分母和分子,然后把結(jié)果返回,如果結(jié)果有循環(huán)把循環(huán)部分用括號(hào)括起來(lái)

個(gè)人思考:
1)思考存儲(chǔ)兩個(gè)列表,一個(gè)是余數(shù)列表numeratorlist ,一個(gè)是值的列表valuelist
2)當(dāng)每次除完,把余數(shù)*10再當(dāng)做除數(shù)除以分母(如果出現(xiàn)相同的除數(shù),則代表要開始進(jìn)行循環(huán)了,記錄此時(shí)的index)
3)每次除完的值放在值的列表里面,根據(jù)index插入括號(hào)
4)使用sign來(lái)記錄符號(hào),全部化成正數(shù)進(jìn)行除法

三、嘗試與結(jié)果

class Solution(object):
    def fractionToDecimal(self, numerator, denominator):
        sign = 1 if numerator*denominator >= 0 else -1
        numerator = abs(numerator)
        denominator = abs(denominator)
        numeratorlist = []
        valuelist = []
        indexValue = -1
        div,mod = divmod(numerator, denominator)
        if mod == 0:
            return str(div * sign)
        valuelist.append(div)
        valuelist.append(".")
        mod = mod * 10
        while True:
            numeratorlist.append(mod)
            div,mod = divmod(mod, denominator)
            valuelist.append(div)
            mod = mod * 10
            if mod in numeratorlist:
                indexValue = numeratorlist.index(mod) + 2 #因?yàn)閘ist已經(jīng)添加了整數(shù)部分(一個(gè)數(shù))和“.”
                break
            if mod == 0:
                break
        if indexValue != -1:
            valuelist.append(")")
            valuelist.insert(indexValue,"(")
        if (sign < 0):
            valuelist.insert(0,"-")
        resultStr = ''.join(map(str,valuelist))
        return resultStr

結(jié)果:AC

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容