Skip to content

Commit 7160f57

Browse files
committed
feat: add solutions to lc problem: No.1556
No.1556.Thousand Separator
1 parent 58621b2 commit 7160f57

File tree

6 files changed

+246
-2
lines changed

6 files changed

+246
-2
lines changed

solution/1500-1599/1556.Thousand Separator/README.md

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,110 @@
4646

4747
<!-- 这里可写通用的实现逻辑 -->
4848

49+
**方法一:模拟**
50+
51+
直接按照题目要求模拟即可。
52+
53+
时间复杂度 $O(\log n)$,忽略答案的空间消耗,空间复杂度 $O(1)$。
54+
4955
<!-- tabs:start -->
5056

5157
### **Python3**
5258

5359
<!-- 这里可写当前语言的特殊实现逻辑 -->
5460

5561
```python
56-
62+
class Solution:
63+
def thousandSeparator(self, n: int) -> str:
64+
cnt = 0
65+
ans = []
66+
while 1:
67+
n, v = divmod(n, 10)
68+
ans.append(str(v))
69+
cnt += 1
70+
if n == 0:
71+
break
72+
if cnt == 3:
73+
ans.append('.')
74+
cnt = 0
75+
return ''.join(ans[::-1])
5776
```
5877

5978
### **Java**
6079

6180
<!-- 这里可写当前语言的特殊实现逻辑 -->
6281

6382
```java
83+
class Solution {
84+
public String thousandSeparator(int n) {
85+
int cnt = 0;
86+
StringBuilder ans = new StringBuilder();
87+
while (true) {
88+
int v = n % 10;
89+
n /= 10;
90+
ans.append(v);
91+
++cnt;
92+
if (n == 0) {
93+
break;
94+
}
95+
if (cnt == 3) {
96+
ans.append('.');
97+
cnt = 0;
98+
}
99+
}
100+
return ans.reverse().toString();
101+
}
102+
}
103+
```
104+
105+
### **C++**
106+
107+
```cpp
108+
class Solution {
109+
public:
110+
string thousandSeparator(int n) {
111+
int cnt = 0;
112+
string ans;
113+
while (1) {
114+
int v = n % 10;
115+
n /= 10;
116+
ans += to_string(v);
117+
if (n == 0) break;
118+
if (++cnt == 3) {
119+
ans += '.';
120+
cnt = 0;
121+
}
122+
}
123+
reverse(ans.begin(), ans.end());
124+
return ans;
125+
}
126+
};
127+
```
64128
129+
### **Go**
130+
131+
```go
132+
func thousandSeparator(n int) string {
133+
cnt := 0
134+
ans := []byte{}
135+
for {
136+
v := n % 10
137+
n /= 10
138+
ans = append(ans, byte('0'+v))
139+
if n == 0 {
140+
break
141+
}
142+
cnt++
143+
if cnt == 3 {
144+
ans = append(ans, '.')
145+
cnt = 0
146+
}
147+
}
148+
for i, j := 0, len(ans)-1; i < j; i, j = i+1, j-1 {
149+
ans[i], ans[j] = ans[j], ans[i]
150+
}
151+
return string(ans)
152+
}
65153
```
66154

67155
### **...**

solution/1500-1599/1556.Thousand Separator/README_EN.md

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,95 @@
3535
### **Python3**
3636

3737
```python
38-
38+
class Solution:
39+
def thousandSeparator(self, n: int) -> str:
40+
cnt = 0
41+
ans = []
42+
while 1:
43+
n, v = divmod(n, 10)
44+
ans.append(str(v))
45+
cnt += 1
46+
if n == 0:
47+
break
48+
if cnt == 3:
49+
ans.append('.')
50+
cnt = 0
51+
return ''.join(ans[::-1])
3952
```
4053

4154
### **Java**
4255

4356
```java
57+
class Solution {
58+
public String thousandSeparator(int n) {
59+
int cnt = 0;
60+
StringBuilder ans = new StringBuilder();
61+
while (true) {
62+
int v = n % 10;
63+
n /= 10;
64+
ans.append(v);
65+
++cnt;
66+
if (n == 0) {
67+
break;
68+
}
69+
if (cnt == 3) {
70+
ans.append('.');
71+
cnt = 0;
72+
}
73+
}
74+
return ans.reverse().toString();
75+
}
76+
}
77+
```
78+
79+
### **C++**
80+
81+
```cpp
82+
class Solution {
83+
public:
84+
string thousandSeparator(int n) {
85+
int cnt = 0;
86+
string ans;
87+
while (1) {
88+
int v = n % 10;
89+
n /= 10;
90+
ans += to_string(v);
91+
if (n == 0) break;
92+
if (++cnt == 3) {
93+
ans += '.';
94+
cnt = 0;
95+
}
96+
}
97+
reverse(ans.begin(), ans.end());
98+
return ans;
99+
}
100+
};
101+
```
44102
103+
### **Go**
104+
105+
```go
106+
func thousandSeparator(n int) string {
107+
cnt := 0
108+
ans := []byte{}
109+
for {
110+
v := n % 10
111+
n /= 10
112+
ans = append(ans, byte('0'+v))
113+
if n == 0 {
114+
break
115+
}
116+
cnt++
117+
if cnt == 3 {
118+
ans = append(ans, '.')
119+
cnt = 0
120+
}
121+
}
122+
for i, j := 0, len(ans)-1; i < j; i, j = i+1, j-1 {
123+
ans[i], ans[j] = ans[j], ans[i]
124+
}
125+
return string(ans)
126+
}
45127
```
46128

47129
### **...**
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
public:
3+
string thousandSeparator(int n) {
4+
int cnt = 0;
5+
string ans;
6+
while (1) {
7+
int v = n % 10;
8+
n /= 10;
9+
ans += to_string(v);
10+
if (n == 0) break;
11+
if (++cnt == 3) {
12+
ans += '.';
13+
cnt = 0;
14+
}
15+
}
16+
reverse(ans.begin(), ans.end());
17+
return ans;
18+
}
19+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
func thousandSeparator(n int) string {
2+
cnt := 0
3+
ans := []byte{}
4+
for {
5+
v := n % 10
6+
n /= 10
7+
ans = append(ans, byte('0'+v))
8+
if n == 0 {
9+
break
10+
}
11+
cnt++
12+
if cnt == 3 {
13+
ans = append(ans, '.')
14+
cnt = 0
15+
}
16+
}
17+
for i, j := 0, len(ans)-1; i < j; i, j = i+1, j-1 {
18+
ans[i], ans[j] = ans[j], ans[i]
19+
}
20+
return string(ans)
21+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public String thousandSeparator(int n) {
3+
int cnt = 0;
4+
StringBuilder ans = new StringBuilder();
5+
while (true) {
6+
int v = n % 10;
7+
n /= 10;
8+
ans.append(v);
9+
++cnt;
10+
if (n == 0) {
11+
break;
12+
}
13+
if (cnt == 3) {
14+
ans.append('.');
15+
cnt = 0;
16+
}
17+
}
18+
return ans.reverse().toString();
19+
}
20+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def thousandSeparator(self, n: int) -> str:
3+
cnt = 0
4+
ans = []
5+
while 1:
6+
n, v = divmod(n, 10)
7+
ans.append(str(v))
8+
cnt += 1
9+
if n == 0:
10+
break
11+
if cnt == 3:
12+
ans.append('.')
13+
cnt = 0
14+
return ''.join(ans[::-1])

0 commit comments

Comments
 (0)