牛客 算法题 【HJ102 字符统计】 golang实现

题目

HJ102 字符统计

golang代码实现

go 复制代码
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	// str_arry :=make([]string, 0)
	str_map := make(map[rune]int)
	result_map := make(map[int][]string)
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		str := scanner.Text()
		for _, r := range str {
			_, ok := str_map[r]
			if ok {
				//删除
				srt_tmp := result_map[str_map[r]]
				for i, s_tmp := range srt_tmp {
					if s_tmp == string(r) {
						if i < len(srt_tmp)-1 {
							srt_tmp = append(srt_tmp[:i], srt_tmp[i+1:]...)
						} else {
							srt_tmp = srt_tmp[:i]
						}
					}
				}
				result_map[str_map[r]] = srt_tmp
				str_map[r] += 1
				//新增到指定数组中
				result_map[str_map[r]] = append(result_map[str_map[r]], string(r))

			} else {
				str_map[r] = 1
				result_map[1] = append(result_map[1], string(r))
			}
		}
	}

    lenstr:=len(result_map)
    for i:=lenstr;i>=1;i--{
        arr :=result_map[i]
        if len(arr)>0{
            sort.Sort(byASCII(arr))
            for _,v:=range arr{
                fmt.Printf("%s", v)
            }
            
        }
    }
}

type byASCII []string

func (s byASCII) Len() int {
	return len(s)
}

func (s byASCII) Swap(i, j int) {
	s[i], s[j] = s[j], s[i]
}

func (s byASCII) Less(i, j int) bool {
	for k := 0; k < len(s[i]) && k < len(s[j]); k++ {
		if s[i][k] != s[j][k] {
			return s[i][k] < s[j][k]
		}
	}
	return len(s[i]) < len(s[j])
}

结果

相关推荐
沐浴露z15 小时前
【JVM】详解 垃圾回收
java·jvm·算法
代码欢乐豆16 小时前
编译原理机测客观题(7)优化和代码生成练习题
数据结构·算法·编译原理
Scc_hy17 小时前
强化学习_Paper_2000_Eligibility Traces for Off-Policy Policy Evaluation
人工智能·深度学习·算法·强化学习·rl
不会写DN17 小时前
用户头像文件存储功能是如何实现的?
java·linux·后端·golang·node.js·github
leke200317 小时前
2025年10月17日
算法
CoovallyAIHub17 小时前
Mamba-3震撼登场!Transformer最强挑战者再进化,已进入ICLR 2026盲审
深度学习·算法·计算机视觉
Aqua Cheng.17 小时前
代码随想录第七天|哈希表part02--454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
java·数据结构·算法·散列表
怀揣小梦想17 小时前
跟着Carl学算法--哈希表
数据结构·c++·笔记·算法·哈希算法·散列表
Nebula_g17 小时前
Java哈希表入门详解(Hash)
java·开发语言·学习·算法·哈希算法·初学者
Kent_J_Truman17 小时前
【模拟散列表】
数据结构·算法·蓝桥杯·散列表·常识类