题解 | 数据分类处理

数据分类处理

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
}

全部评论

相关推荐

06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务