题解 | 数据分类处理
数据分类处理
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 }