Go--统计数组中重复的元素及重复次数

发布时间 2023-07-12 11:43:16作者: 心恩惠动

代码:

package main

import (
    "fmt"
)

func main() {
    //创建有重复数值的数组
    a1 := []int{1, 2, 3, 1, 4, 5, 2}
    a2 := []string{"t1", "t2", "t1", "t3", "t5", "t3"}
    //创建map
    s1 := make(map[int]int)
    s2 := make(map[string]int)

    //遍历数组,将数组的元素值与map的键做对比
    for _, v := range a1 {
        //判断键是否存在 value, ok := map[key] ,若存在,计数器+1,若不存在,则插入并将计数器置为1
        if _, ok := s1[v]; ok {
            s1[v]++
        } else {
            s1[v] = 1
        }
    }

    for k, v := range s1 {
        fmt.Printf("%d出现了%d次\n", k, v)
    }
    fmt.Println("s1:", s1)

    fmt.Println()
    //遍历数组,将数组的元素值与map的键做对比
    for _, v := range a2 {
        //判断键是否存在 value, ok := map[key] ;若存在,计数器+1,若不存在,则插入并将计数器置为1
        if _, ok := s2[v]; ok {
            s2[v]++
        } else {
            s2[v] = 1
        }
    }

    for k, v := range s2 {
        fmt.Printf("%s出现了%d次\n", k, v)
    }
    fmt.Println("s2:", s2)
}

输出结果:

1出现了2次
2出现了2次
3出现了1次
4出现了1次
5出现了1次
s1: map[1:2 2:2 3:1 4:1 5:1]

t1出现了2次
t2出现了1次
t3出现了2次
t5出现了1次
s2: map[t1:2 t2:1 t3:2 t5:1]

进程 已完成,退出代码为 0