- Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstring.sortStringOnly.go
46 lines (41 loc) · 931 Bytes
/
string.sortStringOnly.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
package other
import (
"sort"
)
// 题目:给定一个字符串,带数字字母和其他特殊字符,要求只给字母排序,其他字符串位置保持不变
// 例如:input: cb12$%a2A output: Aa12$%b2c
// func main() {
// str := "09cbAa12d98xYz~#"
// // str = "cb12$%a2A"
// fmt.Printf("origin str: %s\n", str)
// fmt.Println(sortStringOnly(str))
// }
funcsortStringOnly(strstring) string {
var (
letter, other []string
flags []bool
)
for_, char:=range []byte(str) {
// A-Z || a-z
if (char>=65&&char<=90) || (char>=97&&char<=122) {
letter=append(letter, string(char))
flags=append(flags, true)
} else {
other=append(other, string(char))
flags=append(flags, false)
}
}
sort.Strings(letter)
vari, jint
varresstring
for_, flag:=rangeflags {
ifflag {
res+=letter[i]
i++
} else {
res+=other[j]
j++
}
}
returnres
}