【Go每日一練】統計字符出現的次數

👻創作者:丶重明
👻創作時間:2025年3月9日
👻擅長領域:運維

目錄

  • 1.😶?🌫?題目:統計字符出現的次數
  • 2.😶?🌫?代碼中可用的資源
  • 3.😶?🌫?代碼開發過程
  • 4.😶?🌫?代碼輸出結果
  • 5.😶?🌫?代碼解析
  • 6.😶?🌫?內容擴展

1.😶?🌫?題目:統計字符出現的次數

編寫一個 Go 函數,接收一個字符串,返回該字符串中每個字符出現的次數,返回值為一個映射(map)類型。

2.😶?🌫?代碼中可用的資源

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

3.😶?🌫?代碼開發過程

通過Go語言開發,以下是完整代碼。

package mainimport ("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命令執行代碼。

> 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 mainimport ("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視為一個單詞
  • 忽略文中的標點符號
  • 按出現次數的多少進行排序

同系列:

上一篇:【Go每日一練】返回切片中的最大值和最小值

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73089.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73089.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73089.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp在APP平臺(Android/iOS)選擇非媒體文件

TOC 背景 在我們APP開發過程中,經常會有這樣一個需求場景:從手機中選擇文件然后進行上傳,這些文件主要分為兩類,媒體文件和非媒體文件。而媒體文件選擇在APP平臺我們可以使用uni.chooseImage和uni.chooseVideo這兩個API來實現。…

【eNSP實戰】配置交換機端口安全

拓撲圖 目的:讓交換機端口與主機mac綁定,防止私接主機。 主機PC配置不展示,按照圖中配置即可。 開始配置之前,使用PC1 ping 一遍PC2、PC3、PC4、PC5,讓交換機mac地址表刷新一下記錄。 LSW1查看mac地址表 LSW1配置端…

卡爾曼濾波算法從理論到實踐:在STM32中的嵌入式實現

摘要:卡爾曼濾波(Kalman Filter)是傳感器數據融合領域的經典算法,在姿態解算、導航定位等嵌入式場景中廣泛應用。本文將從公式推導、代碼實現、參數調試三個維度深入解析卡爾曼濾波,并給出基于STM32硬件的完整工程案例…

Redis----大key、熱key解決方案、腦裂問題

文章中相關知識點在往期已經更新過了,如果有友友不理解可翻看往期內容 出現腦裂問題怎么保證集群還是高可用的 什么是腦裂問題 腦裂說的就是當我們的主節點沒有掛,但是因為網絡延遲較大,然后和主節點相連的哨兵通信較差,之后主…

python總結(3)

創建自定義類 終于要創建自定義類了!下面是一個簡單的示例: class Person:def set_name(self, name):self.name namedef get_name(self):return self.namedef greet(self):print("Hello, world! Im {}.".format(self.name))這個示例包含三個方法定義,它…

word畢業論文“et al.”替換為“等”——宏

Sub 中文參考文獻改等()中文參考文獻改等 宏Selection.Find.ClearFormattingSelection.Find.Replacement.ClearFormattingWith Selection.Find.Text "([一-龥], )et al.".Replacement.Text "\1等.".Forward True.Wrap wdFindContinue.Format False.Ma…

網絡編程-----服務器(多路復用IO 和 TCP并發模型)

一、單循環服務器模型 1. 核心特征 while(1){newfd accept();recv();close(newfd);}2. 典型應用場景 HTTP短連接服務&#xff08;早期Apache&#xff09;CGI快速處理簡單測試服務器 3. 綜合代碼 #include <stdio.h> #include <sys/types.h> /* See NO…

typora高亮方案+鼠標側鍵一鍵改色

引言 在typora里面有一個自定義的高亮, <mark></mark>>但是單一顏色就太難看了, 我使用人工智能, 搜索全網藝術家, 匯集了幾種好看的格式,并且方便大家側鍵一鍵 調用, 是不是太方便啦 ! 示例 午夜模式 春意盎然 深海藍調 石墨文檔 秋日暖陽 蜜桃宣言 使用方法 …

swift -(5) 匯編分析結構體、類的內存布局

一、結構體 在 Swift 標準庫中&#xff0c;絕大多數的公開類型都是結構體&#xff0c;而枚舉和類只占很小一部分 比如Bool、 Int、 Double、 String、 Array、 Dictionary等常見類型都是結構體 ① struct Date { ② var year: Int ③ var month: Int ④ …

從零開始學機器學習——初探分類器

首先給大家介紹一個很好用的學習地址:https://cloudstudio.net/columns 在上一節中,我們已經完成了對所有經過均衡和清洗的菜品數據的準備工作。接下來,我們將考慮使用多種算法,也就是不同的分類器,來構建模型。我們將利用這個數據集和各種分類器,基于一組特定的配料,預…

黑色RGB是什么

>好的&#xff0c;用戶現在問的是“黑色rgb是什么”。我需要先理解用戶的問題。之前用戶在使用MATLAB調整網格線顏色時&#xff0c;可能看到了默認顏色是黑色&#xff0c;或者之前我提到過默認顏色是[0.15 0.15 0.15]&#xff0c;而用戶可能現在想知道黑色的RGB值具體是什么…

做到哪一步才算精通SQL

做到哪一步才算精通SQL-Structured Query Language 數據定義語言 DDL for StructCREATE&#xff1a;用來創建數據庫、表、索引等對象ALTER&#xff1a;用來修改已存在的數據庫對象DROP&#xff1a;用來刪除整個數據庫或者數據庫中的表TRUNCATE&#xff1a;用來刪除表中所有的行…

《深度解析DeepSeek-M8:量子經典融合,重塑計算能效格局》

在科技飛速發展的今天&#xff0c;量子計算與經典算法的融合成為了前沿領域的焦點。DeepSeek-M8的“量子神經網絡混合架構”&#xff0c;宛如一把鑰匙&#xff0c;開啟了經典算法與量子計算協同推理的全新大門&#xff0c;為諸多復雜問題的解決提供了前所未有的思路。 量子計算…

解決電腦問題(2)——主板問題

當電腦主板出現問題時&#xff0c;可以嘗試以下解決方法&#xff1a; 外觀檢查與清潔 檢查硬件連接&#xff1a;仔細查看主板上的各種硬件連接&#xff0c;包括 CPU、內存、顯卡、硬盤、電源等的連接線是否松動或損壞。確保所有插頭都牢固地插入相應的插槽中&#xff0c;如有松…

Java 大視界 -- Java 大數據在智能家居能源管理與節能優化中的應用(120)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

【網絡】TCP常考知識點詳解

TCP報文結構 TCP報文由**首部&#xff08;Header&#xff09;和數據&#xff08;Data&#xff09;**兩部分組成。首部包括固定部分&#xff08;20字節&#xff09;和可選選項&#xff08;最多40字節&#xff09;&#xff0c;總長度最大為60字節。 1. 首部固定部分 源端口&…

算法1-6 一元三次方程求解

題目描述 有形如&#xff1a;ax3bx2cxd0 這樣的一個一元三次方程。給出該方程中各項的系數&#xff08;a,b,c,d 均為實數&#xff09;&#xff0c;并約定該方程存在三個不同實根&#xff08;根的范圍在 ?100 至 100 之間&#xff09;&#xff0c;且根與根之差的絕對值 ≥1。要…

05.基于 TCP 的遠程計算器:從協議設計到高并發實現

&#x1f4d6; 目錄 &#x1f4cc; 前言&#x1f50d; 需求分析 &#x1f914; 我們需要解決哪些問題&#xff1f; &#x1f3af; 方案設計 &#x1f4a1; 服務器架構 &#x1f680; 什么是協議&#xff1f;為什么要設計協議&#xff1f; &#x1f4cc; 結構化數據的傳輸問題 …

大數據面試之路 (一) 數據傾斜

記錄大數據面試歷程 數據傾斜 大數據崗位 &#xff0c;數據傾斜面試必問的一個問題。 一、數據傾斜的表現與原因 表現 某個或某幾個Task執行時間過長&#xff0c;其他Task快速完成。 Spark/MapReduce作業卡在某個階段&#xff08;如reduce階段&#xff09;&#xff0c;日志顯…

僅僅使用pytorch來手撕transformer架構(3):編碼器模塊和編碼器類的實現和向前傳播

僅僅使用pytorch來手撕transformer架構(2)&#xff1a;編碼器模塊和編碼器類的實現和向前傳播 往期文章&#xff1a; 僅僅使用pytorch來手撕transformer架構(1)&#xff1a;位置編碼的類的實現和向前傳播 最適合小白入門的Transformer介紹 僅僅使用pytorch來手撕transformer…