题解 | 数据分类处理
数据分类处理
https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd
package main
import (
"fmt"
"sort"
"strconv"
"strings"
)
func main() {
var nR, nI int
var sR, sI []string
var t string
fmt.Scan(&nR)
for i := 0; i < nR; i++ {
fmt.Scan(&t)
sR = append(sR, t)
}
fmt.Scan(&nI)
for i := 0; i < nI; i++ {
fmt.Scan(&t)
sI = append(sI, t)
}
sI = format(sI)
rI := []string{}
for _, r := range sI {
t := []string{}
count := 0
for i, v := range sR {
if strings.Contains(v, r) {
t = append(t, strconv.FormatInt(int64(i), 10))
t = append(t, v)
count++
}
}
if count != 0 {
rI = append(rI, r)
rI = append(rI, strconv.FormatInt(int64(count), 10))
rI = append(rI, t...)
}
}
fmt.Printf("%d ", len(rI))
for _, v := range rI {
fmt.Printf("%s ", v)
}
}
func format(s []string) []string {
res := []string{}
cache := make(map[string]int, len(s))
for i := range s {
cache[s[i]] += 1
}
for k, _ := range cache {
res = append(res, k)
}
sort.Slice(res, func(i, j int) bool {
ti, _ := strconv.Atoi(res[i])
tj, _ := strconv.Atoi(res[j])
return ti < tj
})
return res
}
