当前位置: 首页 > news >正文

【Go每日一练】统计字符出现的次数

👻创作者:丶重明
👻创作时间:2025年3月9日
👻擅长领域:运维

目录

  • 1.😶‍🌫️题目:
  • 2.😶‍🌫️资源:
  • 3.😶‍🌫️代码:
  • 4.😶‍🌫️输出:
  • 5.😶‍🌫️解析:
  • 6.😶‍🌫️扩展:

1.😶‍🌫️题目:

编写一个 Go 函数,接收一个字符串,返回该字符串中每个字符出现的次数,返回值为一个映射(map)类型。

2.😶‍🌫️资源:

dwadaw达瓦官方阿迪王迪王是是是哇

3.😶‍🌫️代码:

package main

import (
	"fmt"
)

func countCharacters(s string) map[rune]int {
	charCount := make(map[rune]int)

	for _, char := range s {
		charCount[char]++
	}
	return charCount
}
func main() {
	input := "dwadaw达瓦官方阿迪王迪王是是是哇"
	counts := countCharacters(input)

	for char, count := range counts {
		fmt.Printf("'%c': %d\n", char, count)
	}
}

4.😶‍🌫️输出:

> go run .\4.gotest.go
'阿': 1
'王': 2
'w': 2
'a': 2
'达': 1
'瓦': 1
'官': 1
'方': 1
'迪': 2
'是': 3
'd': 2
'哇': 1

5.😶‍🌫️解析:

func countCharacters(s string) map[rune]int {...}

定义一个名为countCharacters的函数,接收一个字符串s作为参数,并返回一个map[rune]int类型的结果

map[rune]int表示一个键为rune类型,值为 int类型的映射

rune表示一个 Unicode 码点,用于处理Unicode 字符(如中文、表情符号等)

   charCount := make(map[rune]int)

使用make创建一个空的map[rune]int类型的映射charCount,用于储存每个字符及出现的次数

    for _, char := range s {
        charCount[char]++
    }

使用for循环遍历字符串s中的每个字符

charCount[char]++对当前字符char在映射charCount中的计数加1

	input := "dwadaw达瓦官方阿迪王迪王是是是哇"
	counts := countCharacters(input)

定义一个字符串类型的变量input,其初始值为“ ”内内容

调用函数countCharacters将字符串input作为参数传入,将返回的值赋值给变量counts

    for char, count := range counts {
        fmt.Printf("'%c': %d\n", char, count)
    }

使用for...range遍历counts映射中的每个键值对,其中char是字符,count是出现的次数

然后使用fmt.Printf将字符和出现的次数打印出来

6.😶‍🌫️扩展:

如果有一段话是英文句子,该怎么统计:

hello world, go python java go world world

代码:

package main

import (
	"fmt"
	"strings"
)

func countCharacters(s string) map[string]int {
	wordCount := make(map[string]int)
	// 将字符串以空白为分隔符分区
	words := strings.Fields(s)

	for _, word := range words {
		wordCount[word]++
	}
	return wordCount
}
func main() {
	input := "hello world, go python java go world world"
	counts := countCharacters(input)

	for word, count := range counts {
		fmt.Printf("\"%s\": %d\n", word, count)
	}
}

输出:

> go run .\4.gotest.go
"world,": 1
"go": 2
"python": 1
"java": 1
"world": 2
"hello": 1

其他扩展方向,请自行尝试:

  • 从外部导入文件并统计
  • 大小写标准化,比如helloHELLO视为一个单词
  • 忽略文中的标点符号
  • 按出现次数的多少进行排序

相关文章:

  • 【python爬虫】酷狗音乐爬取练习
  • Manus详细介绍
  • 复现 MODEST 机器人抓取透明物体 单目 ICRA 2025
  • 【编译器】VSCODE编译C语言
  • 如是APP:AI精准匹配需求,信用体系重构信任,双轮驱动打造无套路电商
  • 将本地已有的项目上传至仓库
  • 第七章:go 切片
  • 对开源VLA sota π0的微调——如何基于各种开源数据集、以及你自己的私有数据集微调π0(含我司的微调实践)
  • 数据结构(回顾)
  • 深度学习算法实战——风格迁移(主页有源码)
  • 开发指南107-谷歌内核浏览器滚动条设置
  • 开发过程中遇到的问题记录
  • 011---UART协议的基本知识(一)
  • Tensorflow 2.0 GPU的使用与限制使用率及虚拟多GPU
  • 计算机视觉算法实战——野猪检测(主页有源码)
  • 【2025年27期免费获取股票数据API接口】实例演示五种主流语言获取股票行情api接口之沪深A股跌停股池数据获取实例演示及接口API说明文档
  • 虚函数和虚表的原理是什么?
  • Deepseek中的MoE架构的改造:动态可变参数激活的MoE混合专家架构(DVPA-MoE)的考虑
  • 【算法day5】最长回文子串——马拉车算法
  • 静态网页的爬虫(以电影天堂为例)
  • 张家界一铁路致17人身亡,又有15岁女孩殒命,已开始加装护栏
  • 阿里上季度营收增7%:淘天营收创新高,AI产品营收连续七个季度三位数增长
  • 警方通报男子广州南站持刀伤人:造成1人受伤,嫌疑人被控制
  • 男子恶意遗弃幼子获刑,最高法发布涉未成年人家庭保护典型案例
  • 牛市早报|4月新增社融1.16万亿,降准今日正式落地
  • 基金经理调仓引发大金融板块拉升?公募新规落地究竟利好哪些板块