题目描述
给你一个整数 n
,请你每隔三位添加点(即 "." 符号)作为千位分隔符,并将结果以字符串格式返回。
示例 1:
输入:n = 987
输出:"987"
示例 2:
输入:n = 1234
输出:"1.234"
示例 3:
输入:n = 123456789
输出:"123.456.789"
示例 4:
输入:n = 0
输出:"0"
提示:
解法
方法一:模拟
直接按照题目要求模拟即可。
时间复杂度 $O(\log n)$,忽略答案的空间消耗,空间复杂度 $O(1)$。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | class Solution:
def thousandSeparator(self, n: int) -> str:
cnt = 0
ans = []
while 1:
n, v = divmod(n, 10)
ans.append(str(v))
cnt += 1
if n == 0:
break
if cnt == 3:
ans.append('.')
cnt = 0
return ''.join(ans[::-1])
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | class Solution {
public String thousandSeparator(int n) {
int cnt = 0;
StringBuilder ans = new StringBuilder();
while (true) {
int v = n % 10;
n /= 10;
ans.append(v);
++cnt;
if (n == 0) {
break;
}
if (cnt == 3) {
ans.append('.');
cnt = 0;
}
}
return ans.reverse().toString();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | class Solution {
public:
string thousandSeparator(int n) {
int cnt = 0;
string ans;
while (1) {
int v = n % 10;
n /= 10;
ans += to_string(v);
if (n == 0) break;
if (++cnt == 3) {
ans += '.';
cnt = 0;
}
}
reverse(ans.begin(), ans.end());
return ans;
}
};
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | func thousandSeparator(n int) string {
cnt := 0
ans := []byte{}
for {
v := n % 10
n /= 10
ans = append(ans, byte('0'+v))
if n == 0 {
break
}
cnt++
if cnt == 3 {
ans = append(ans, '.')
cnt = 0
}
}
for i, j := 0, len(ans)-1; i < j; i, j = i+1, j-1 {
ans[i], ans[j] = ans[j], ans[i]
}
return string(ans)
}
|