811.Subdomain_Visit_Count

811. Subdomain Visit Count

这个题没什么好说的,就常规解法,放到一个 map 中,key 是 域名,value 是域名出现的次数,最后遍历这个 map,按照格式输出就行。

  1. 用空格分割字符串,找出数字和后边的域名,并把域名和数字作为 key-value 添加到 map 中
  2. 用点分割,点后边的字符串就是子域名,然后把子域名 和 数字 作为 key-value 添加到 map 中
  3. 最后遍历这个 map,按照格式输出就行。

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
func subdomainVisits(cpdomains []string) []string {
countMap := make(map[string]int)
var count int
var subStr string
for _, domain := range cpdomains {

for i, c := range domain {
if c == ' ' {
count, _ = strconv.Atoi(domain[:i])
subStr = domain[i+1:]
break
}
}
countMap[subStr] += count
for i, c := range subStr {
if c == '.' {
countMap[subStr[i+1:]] += count
}
}
}

res := make([]string, 0)

for key, value := range countMap {
res = append(res, strconv.Itoa(value) + " " + key)
}
return res
}