卡码网Java基础课--哈希表基础(1)--出现频率最高的字母例题
在刷题的时候你会发现对于数组和字符串的题目经常会用到哈希表这个知识点。那么什么是哈希表或者说哈希表的定义又是啥如果你去网上查会有很多关于哈希表的定义这里我们不再阐述哈希表的定义。哈希表来解决问题的时候一般选择以下三种数据结构。数组set集合map映射本篇先说数组通过数组来使用哈希表的知识也就可以说是哈希数组什么哈希数组举个例子给定一个数组A根据数组A来解决一个问题。为解决问题我们 新建一个数组B把数组A的值作为数组B的索引数组B就是哈希数组。通俗的讲哈希数组就是把一个数组的值作为自己的索引这个数组就是哈希数组后续对哈希数组进行什么操作根据题意进行模拟就行。什么时候使用哈希表这个知识点呢大多数情况下当题目中出现重复元素的时候就应该考虑是否可以使用哈希表来解决问题。例题出现频率最高的字母。这道例题很好的诠释了哈希表的基本概念以及如何通过数组这个数据结构来使用哈希表的知识并解决问题。题目描述给定一个只包含小写字母的字符串统计字符串中每个字母出现的频率并找出出现频率最高的字母如果最高频率的字母有多个输出字典序靠前的那个字母。输入描述包含多组测试数据每组测试数据占一行。输出描述有多组输出每组输出占一行。输入示例2 abcdeef aabbccddeeff输出示例e a例题中给出一个字符串要求统计出现频率最高的字符。思路如果把每个字符的总数都记录下来再进行比较那么总数最大的就是我们所求的如果存在多个出现次数相同的字符那就输出英文字母表中靠前的就可以那么怎么记录每个字符出现的次数并且能把字符和出现的次数对应上呢这就用到哈希表的知识点。方法新建一个数组res数组长度26数组索引为012···25我们让0代表a1代表b以此类推25代表zres[0]的值就代表a出现的次数res[1]的值就代表b出现的次数如果a的次数和b的次数相同那就输出a到此问题就解决。上面我们提到哈希数组就是把一个数组的值作为自己的索引这里是字符串把字符串转换成数组就可以道理都是一样的例如str [a,b,c,d,e]对于res来说res的索引为012···这里0对应a1对应b这里有一种对应关系这不就是把str的值当成res的索引。如果还不能理解把题意换一下求一个整数数组中数字出现次数最多的数字数组元素仅包含0~9即ans[0,3,4,2,1]同理res的索引为012等这里的012就是ans的值只不过相比上面的strans是直接将数组值作为res的索引str是间接的将数组值作为res的索引。以下是完整Java代码import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); int n scanner.nextInt(); for (int i 0; i n; i) { String input scanner.next(); char mostFrequentChar findMostFrequentChar(input); // 调用方法获取字符 System.out.println(mostFrequentChar); } scanner.close(); } // 找到最大频次字符的方法 public static char findMostFrequentChar(String input) { int[] frequency new int[26]; for (char c : input.toCharArray()) { frequency[c - a]; } char mostFrequentChar a; int maxFrequency frequency[0]; for (int i 1; i 26; i) { if (frequency[i] maxFrequency) { maxFrequency frequency[i]; mostFrequentChar (char) (a i); } } return mostFrequentChar; } }如果给出的例题不好理解请参考如下例题力扣面试题 01.01.判定字符是否唯一。题目要求实现一个算法确定一个字符串s的所有字符是否全都不同。示例 1输入:s leetcode输出:false示例 2输入:s abc输出:true限制0 len(s) 100s[i]仅包含小写字母解题思路和方法是一样的不再阐述以下是C语言完整代码bool isUnique(char* astr){ int *result (int *)calloc(26,sizeof(int)); int len strlen(astr); int i; for(i0;ilen;i){ result[astr[i] - 97] result[astr[i] - 97] 1; } for(i0;i26;i){ if(result[i] 1){ return false; } } return true; }附以上内容中第一道例题和例题代码均来自卡码网若有侵权将第一时间内删除。其余内容为自己撰写若有错误将在第一时间进行修改。

相关新闻

职业培训开班日设计:提升学员参与度的关键策略

职业培训开班日设计:提升学员参与度的关键策略

1. 项目背景与核心价值"八期-day01-开班"这个标题看似简单,实际上蕴含着一个完整培训项目的启动环节。作为项目管理者,我参与过多次类似的开班仪式设计,深知这个环节对于整个培训周期的重要性。开班日不仅是简单的见面会&#xff0…

2026/7/22 15:56:21 阅读更多 →
HarmonyOS应用开发实战:萌宠日记 - 保存按钮与底部操作栏

HarmonyOS应用开发实战:萌宠日记 - 保存按钮与底部操作栏

HarmonyOS应用开发实战:萌宠日记 - 保存按钮与底部操作栏 前言 保存按钮 是日记编辑器的 最终操作入口,用户完成所有输入后,通过点击保存按钮将日记数据持久化。在 萌宠日记 的日记编辑器中,底部操作栏包含 社交分享按钮&#xf…

2026/7/22 15:56:21 阅读更多 →
2026科技创新的国内EMBA中立择校测评

2026科技创新的国内EMBA中立择校测评

民营企业家、企业创始人选读EMBA,大多纠结三大问题:课程是否贴合科创转型、圈层是否匹配企业发展、资源能否助力出海与数字化升级。本文从全球办学排名、院校办学定位、课程体系、学员圈层、产业资源五大维度,对科技创新的国内EMBA主流项目做…

2026/7/22 15:56:21 阅读更多 →

最新新闻

TI C2000平台异步电机无传感器FOC增量式构建与调试实战

TI C2000平台异步电机无传感器FOC增量式构建与调试实战

1. 项目概述与核心价值在工业驱动和伺服控制领域,异步电机(ACI)因其结构简单、坚固耐用、成本低廉而占据主导地位。然而,其复杂的非线性耦合特性使得高性能控制一直是个挑战。矢量控制(Field-Oriented Control, FOC&am…

2026/7/22 16:40:45 阅读更多 →
嵌入式视频开发实战:VPDMA与HD_VENC_D寄存器配置与调试指南

嵌入式视频开发实战:VPDMA与HD_VENC_D寄存器配置与调试指南

1. 项目概述与核心价值 在嵌入式多媒体开发,尤其是基于德州仪器(TI)DaVinci或类似SoC平台进行高清视频应用开发时,工程师迟早会与两个核心硬件模块正面交锋: 视频处理直接内存访问(VPDMA) 和 …

2026/7/22 16:40:45 阅读更多 →
C2000 ERAD模块实战:硬件级系统监控与实时诊断技术解析

C2000 ERAD模块实战:硬件级系统监控与实时诊断技术解析

1. 项目概述:为什么我们需要硬件级的“系统哨兵”?在电机驱动、数字电源或者新能源汽车的电控单元里干活久了,你一定会对“实时性”和“可靠性”这两个词有切肤之痛。我们设计的系统,本质上是一个永不停歇的精密循环:A…

2026/7/22 16:40:45 阅读更多 →
TI HDVPSS寄存器深度解析:DVO时序与噪声滤波配置实战

TI HDVPSS寄存器深度解析:DVO时序与噪声滤波配置实战

1. 项目概述与核心价值 在嵌入式视频处理系统的开发中,尤其是基于德州仪器(TI)这类高性能处理器的项目,驱动工程师和系统架构师经常会遇到一个核心挑战:如何将硬件数据手册中冰冷的寄存器位描述,转化为稳定…

2026/7/22 16:40:45 阅读更多 →
AI漫剧的三大主要形式

AI漫剧的三大主要形式

你以为AI漫剧只有一种?Too young too simple! AI漫剧其实有三大主要形式,每种形式都有自己独特的魅力和适用场景。了解它们的​区别,可以帮助你找到最适合自己的创作方向。 形式一:静态漫画 静态漫画是最接近传统漫画的形式——只不过传统漫画是人工画的,静态漫画是AI画…

2026/7/22 16:40:45 阅读更多 →
2026年度GEO服务商综合实力榜单:技术能力与服务实效双维评测,助力企业精准选型

2026年度GEO服务商综合实力榜单:技术能力与服务实效双维评测,助力企业精准选型

据行业数据显示,生成式AI用户规模持续快速增长,用户获取信息、做出消费决策的渠道正加速从传统搜索引擎向AI问答场景迁移,生成式引擎优化也从早期的技术探索,跃升为品牌争夺AI流量入口、抢占用户心智的核心战略。中国GEO市场规模保…

2026/7/22 16:39:45 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻