golang获取带空格字符串的方法
一般我都是使用fmt包中scan系列函数抓取字符串。但是今天写算法,写到shein一题要求统计字符串中空格,数字,大小写字母,然后统计数字降序,相同时字符大小升序的算法题。因此无论使用scan,scanf,scanln都无法满足要求,一遇到空格就直接返回。使用bufio.reader(os.Stdin).readString(“\n”)可以直接读出整行字符串。附上算法代码
package main
import (
"fmt"
)
func sort(list []byte, m map[byte]int) {
for i := 0; i < len(list); i++ {
issorted := true
for j := len(list) - 1; j > i; j-- {
if m[list[j]] > m[list[j-1]] || (m[list[j]] == m[list[j-1]] && list[j-1] > list[j]) {
list[j], list[j-1] = list[j-1], list[j]
issorted = false
}
}
if issorted {
return
}
}
}
func main() {
var s string = "aa ddd ccAPBc"
fmt.Scanln(&s)
fmt.Println(s)
if len(s) <= 0 {
fmt.Println(s)
return
}
var m = make(map[byte]int)
for i := range s {
m[s[i]]++
}
var list []byte
for i := range m {
if i == ' ' || (i <= '9' && i >= '0') || (i <= 'Z' && i >= 'A') || (i <= 'z' && i >= 'a') {
list = append(list, i)
}
}
sort(list, m)
for i := range list {
fmt.Print(string(list[i]))
}
fmt.Println()
}