zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):哈希表类:第166题:分数到小数:给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。 如果小数部分为循环小数,则将循环的部分括在括号内。

    题目:
    分数到小数:给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。  如果小数部分为循环小数,则将循环的部分括在括号内。 
    思路:
    一开始想到用哈希表来存储小数点后的部分,就是没有想出一个很好的表达,一直也不对,看来一个大神的解答,写的很好啊,学习了,自己按照他的思想写了一下,此外,这道题涉及到的细节问题有很多,得注意。
    程序:
    class Solution:
        def fractionToDecimal(self, numerator: int, denominator: int) -> str:
            if numerator == 0:
                return '0'
            if denominator == 0:
                return 'Nan'
            if numerator * denominator < 0:
                sign = '-'
            if numerator * denominator > 0:
                sign = ''
            numerator = abs(numerator)
            denominator = abs(denominator)
            a, b = divmod(numerator, denominator)
            if b == 0:
                return sign + str(a)
            result = sign + str(a) + '.'
            myHashMap = {}
            index = len(result)
            while b != 0:
                if b not in myHashMap:
                    myHashMap[b] = index
                else:
                    index = myHashMap[b]
                    result = result[: index] + '('+ result[index :] +')'
                    return result
                a, b = divmod(b * 10, denominator)
                result += str(a)
                index += 1
            return result
  • 相关阅读:
    vue打包报错
    css实现平行四边形
    js计算两个天数的差值
    创建vue项目的第一步——之安装vue 命令更新了
    Vue-router详解路由
    Vue-axios 在vue cli中封装
    jQuery-自己封装的弹框
    vue-上传文件
    vue-axios当只调用vue.js又需要axios请求多时
    Vant-UI移动端时间选择框
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12795222.html
Copyright © 2011-2022 走看看