Skip to content

Commit 24f1c43

Browse files
authored
feat: 1694. Reformat Phone Number (#102)
Signed-off-by: ashing <[email protected]>
1 parent ef0b020 commit 24f1c43

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package _694
2+
3+
import (
4+
"bytes"
5+
"strings"
6+
)
7+
8+
func reformatNumber(number string) string {
9+
number = strings.Replace(number, " ", "", -1)
10+
number = strings.Replace(number, "-", "", -1)
11+
12+
var res bytes.Buffer
13+
14+
if len(number)%3 == 1 { // 最后是 xx-xx
15+
for i := 0; i < len(number)-4; i++ {
16+
if i%3 == 0 && i != 0 {
17+
res.WriteByte('-')
18+
}
19+
res.WriteByte(number[i])
20+
}
21+
if len(res.String()) > 0 {
22+
res.WriteByte('-')
23+
}
24+
res.WriteString(number[len(number)-4 : len(number)-2])
25+
res.WriteByte('-')
26+
res.WriteString(number[len(number)-2:])
27+
return res.String()
28+
}
29+
if len(number)%3 == 2 { // 最后是 xx
30+
for i := 0; i < len(number)-2; i++ {
31+
if i%3 == 0 && i != 0 {
32+
res.WriteByte('-')
33+
}
34+
res.WriteByte(number[i])
35+
}
36+
if len(res.String()) > 0 {
37+
res.WriteByte('-')
38+
}
39+
res.WriteString(number[len(number)-2:])
40+
return res.String()
41+
}
42+
43+
for i := 0; i < len(number); i++ {
44+
if i%3 == 0 && i != 0 {
45+
res.WriteByte('-')
46+
}
47+
res.WriteByte(number[i])
48+
}
49+
50+
return res.String()
51+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package _694
2+
3+
import "testing"
4+
5+
func Test_reformatNumber(t *testing.T) {
6+
type args struct {
7+
number string
8+
}
9+
tests := []struct {
10+
name string
11+
args args
12+
want string
13+
}{
14+
{
15+
name: "one",
16+
args: args{number: "1-23-45 6"},
17+
want: "123-456",
18+
},
19+
}
20+
for _, tt := range tests {
21+
t.Run(tt.name, func(t *testing.T) {
22+
if got := reformatNumber(tt.args.number); got != tt.want {
23+
t.Errorf("reformatNumber() = %v, want %v", got, tt.want)
24+
}
25+
})
26+
}
27+
}

leetcode/1694/solution1/solution1.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package solution1
2+
3+
import "strings"
4+
5+
func reformatNumber(number string) string {
6+
number = strings.ReplaceAll(strings.ReplaceAll(number, "-", ""), " ", "")
7+
var format func(sub string) string
8+
format = func(sub string) string {
9+
if len(sub) == 2 {
10+
return sub
11+
}
12+
if len(sub) == 3 {
13+
return sub
14+
}
15+
if len(sub) == 4 {
16+
return sub[:2] + "-" + sub[2:]
17+
}
18+
return sub[:3] + "-" + format(sub[3:])
19+
}
20+
return format(number)
21+
}

0 commit comments

Comments
 (0)