Skip to content

Commit

Permalink
feat: 1694. Reformat Phone Number (#102)
Browse files Browse the repository at this point in the history
Signed-off-by: ashing <axingfly@gmail.com>
  • Loading branch information
ronething authored Feb 25, 2024
1 parent ef0b020 commit 24f1c43
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 0 deletions.
51 changes: 51 additions & 0 deletions leetcode/1694/1694. Reformat Phone Number.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package _694

import (
"bytes"
"strings"
)

func reformatNumber(number string) string {
number = strings.Replace(number, " ", "", -1)
number = strings.Replace(number, "-", "", -1)

var res bytes.Buffer

if len(number)%3 == 1 { // 最后是 xx-xx
for i := 0; i < len(number)-4; i++ {
if i%3 == 0 && i != 0 {
res.WriteByte('-')
}
res.WriteByte(number[i])
}
if len(res.String()) > 0 {
res.WriteByte('-')
}
res.WriteString(number[len(number)-4 : len(number)-2])
res.WriteByte('-')
res.WriteString(number[len(number)-2:])
return res.String()
}
if len(number)%3 == 2 { // 最后是 xx
for i := 0; i < len(number)-2; i++ {
if i%3 == 0 && i != 0 {
res.WriteByte('-')
}
res.WriteByte(number[i])
}
if len(res.String()) > 0 {
res.WriteByte('-')
}
res.WriteString(number[len(number)-2:])
return res.String()
}

for i := 0; i < len(number); i++ {
if i%3 == 0 && i != 0 {
res.WriteByte('-')
}
res.WriteByte(number[i])
}

return res.String()
}
27 changes: 27 additions & 0 deletions leetcode/1694/1694. Reformat Phone Number_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package _694

import "testing"

func Test_reformatNumber(t *testing.T) {
type args struct {
number string
}
tests := []struct {
name string
args args
want string
}{
{
name: "one",
args: args{number: "1-23-45 6"},
want: "123-456",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := reformatNumber(tt.args.number); got != tt.want {
t.Errorf("reformatNumber() = %v, want %v", got, tt.want)
}
})
}
}
21 changes: 21 additions & 0 deletions leetcode/1694/solution1/solution1.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package solution1

import "strings"

func reformatNumber(number string) string {
number = strings.ReplaceAll(strings.ReplaceAll(number, "-", ""), " ", "")
var format func(sub string) string
format = func(sub string) string {
if len(sub) == 2 {
return sub
}
if len(sub) == 3 {
return sub
}
if len(sub) == 4 {
return sub[:2] + "-" + sub[2:]
}
return sub[:3] + "-" + format(sub[3:])
}
return format(number)
}

0 comments on commit 24f1c43

Please sign in to comment.