【题目】
给你一个整数 n,请你每隔三位添加点(即 “.” 符号)作为千位分隔符,并将结果以字符串格式返回。
【示例 1】
输入:n = 987
输出:“987”
【示例 2】
输入:n = 1234
输出:“1.234”
【示例 3】
输入:n = 123456789
输出:“123.456.789”
【示例 4】
输入:n = 0
输出:“0”
【提示】
0 <= n < 2^31
【代码】
【CPP】递归法
class Solution {
public:
string thousandSeparator(int n) {
return solve(to_string(n));
}
string solve(string s) {
int n = s.length();
if(n <= 3) {
return s;
}
return solve(s.substr(0, n-3)) + "." + s.substr(n-3, 3);
}
};
【Python】
【法1】
class Solution:
def thousandSeparator(self, n: int) -> str:
# 题目意思就是三位一个点
num=str(n)
rs=""
time=int(len(num)/3)
yushu=len(num)-time*3
for i in range(1,time+1):
if i==1:
rs=num[-3:]+"."+rs
else:
rs=num[-3*i:-3*(i-1)]+"."+rs
if yushu!=0:
rs=num[:yushu]+"."+rs
rs=rs[:len(rs)-1]
return rs
【法2】
class Solution:
def thousandSeparator(self, n: int) -> str:
# 将int型的数字转换成字符串,然后进行字符串反转
num=str(n)[::-1]
cnt=0 #计数器
rs="" #保存结果
l=len(num)
for c in num:
rs+=c
cnt+=1
if cnt%3==0 and cnt!=l:
rs+='.'
return rs[::-1]
【format格式化字符串】
class Solution:
def thousandSeparator(self, n: int) -> str:
rs="{:,}".format(n)
return rs.replace(",",".")
代码十分简洁,就是时间复杂度略高,看起来十分清爽