-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoperation-strings.go
81 lines (59 loc) · 1.52 KB
/
operation-strings.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package algorithms_go
import (
"bytes"
"fmt"
"sort"
"strings"
)
/**
Desc: 对某一字符串排序
*/
// 方法一:首先,字符串转为[]byte, 对切片排序, 最后切片转字符串
func SortString2(str string) {
// str := "eat"
b := []byte(str) // string转换成字节 [101 97 116]
sort.Slice(b, func(i, j int) bool {
return b[i] < b[j]
})
str = string(b) // 字节转字符串
}
// 方法二:首先字符串分割,得到字符串切片, 对切片排序, strings.join连接成新的字符串
func SortString(str string) string {
// str := "eat"
split := strings.Split(str, "") // 字符串切片 []string[e a t]
sort.Strings(split) // 升序排序 []string[a e t]
return strings.Join(split, "") // 切片转化为字符串 aet
}
/**
Desc: 字符串查找测试
*/
// 前缀测试
func HasPrefix(s, prefix string) bool {
return len(s) > len(prefix) && s[:len(prefix)] == prefix
}
// 后缀测试
func HasSuffix(s, suffix string) bool {
return len(s) > len(suffix) && s[len(s) - len(suffix):] == suffix
}
// 子串测试
func Contains(s, substr string) bool {
for i := 0; i < len(s); i++ {
if HasPrefix(s[i:], substr) {
return true
}
}
return false
}
func intsToString(values []int) string {
var buf bytes.Buffer
buf.WriteByte('[')
for i, v := range values {
if i > 0 {
buf.WriteString(", ")
}
fmt.Fprintf(&buf, "%d", v)
}
buf.WriteByte(']') // 添加任意字符的UTF8编码
return buf.String()
}
// Output:fmt.Println(intsToString([]int{1,2,3})) [1, 2, 3]