1556 千位分隔数(模拟)

1. 问题描述:

给你一个整数 n,请你每隔三位添加点(即 "." 符号)作为千位分隔符,并将结果以字符串格式返回。

示例 1:

输入:n = 987
输出:"987"

示例 2:

输入:n = 1234
输出:"1.234"

示例 3:

输入:n = 123456789
输出:"123.456.789"

示例 4:

输入:n = 0
输出:"0"

提示:

  • 0 <= n < 2^31

2. 思路分析:

对于这种题目模拟其中的过程即可,一开始想到的是对数字n进行拆分,得到数字n各个位上的数字并且使用列表将其存储起来,然后倒序遍历列表每三位添加一个"."

3. 代码如下:

class Solution:
    def thousandSeparator(self, n: int) -> str:
        if n == 0: return str(0)
        num_bit = list()
        while n > 0:
            num_bit.insert(0, str(n % 10))
            n //= 10
        if len(num_bit) <= 3: return "".join(num_bit)
        i, res = len(num_bit), ""
        while i >= 0:
            res = "." + "".join(num_bit[i - 3:i]) + res
            i -= 3
            if i - 3 <= 0:
                res = "".join(num_bit[0: i]) + res
                break
        return res

官网代码(比较简洁):

他是直接取出n从末尾到开始的各个位上的数字然后每三位添加一个"."到列表中,最后反向截取列表中的元素

class Solution:
    def thousandSeparator(self, n: int) -> str:
        count = 0
        ans = list()
        while True:
            cur = n % 10
            n //= 10
            ans.append(str(cur))
            count += 1
            if count % 3 == 0 and n > 0:
                ans.append(".")
            if n == 0:
                break
        return "".join(ans[::-1])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值