Python第八天:哈希表笔记以及题目整理
1. 哈希表的核心思想哈希表Hash Table是一种根据关键码key的值直接进行访问的数据结构其主要作用是快速判断一个元素是否出现在集合中。核心思想在关键码key和存储位置之间建立一个确定的对应关系f使得每个关键字 key 对应一个唯一的存储位置。2. 哈希表的直观比喻可以将哈希表想象成一个大抽屉这个大抽屉里面有很多小格子每个格子可以用来存放数据。抽屉编号key通过这个 key 可以找到对应的抽屉散列函数Hash Function将数据的名字key转换成一个数字然后根据这个数字来选择对应的抽屉抽屉里的物品实际存储的数据快速查找通过名字key可以快速地找到对应的抽屉3. 哈希表的数据结构选择在解决问题时哈希表一般选择以下三种数据结构数组列表集合映射4. 哈希冲突与解决哈希冲突不同的 key 经过散列函数可能得到相同的数字即映射到同一个抽屉解决冲突的方法开放地址法链地址法再哈希法建立公共溢出区5. 哈希表的优势快速查找平均时间复杂度 O(1)直接访问通过 key 可以直接定位到存储位置避免重复比较不需要像线性查找那样逐个比较6. 应用场景快速查找元素是否存在数据去重缓存实现字典/映射关系存储统计频率7. 实现要点# 简单哈希表示例classSimpleHashTable:def__init__(self,size10):self.sizesize self.table[[]for_inrange(size)]# 使用链地址法解决冲突defhash_function(self,key):简单的散列函数returnhash(key)%self.sizedefinsert(self,key,value):插入键值对indexself.hash_function(key)self.table[index].append((key,value))defsearch(self,key):查找键对应的值indexself.hash_function(key)fork,vinself.table[index]:ifkkey:returnvreturnNone8. 注意事项散列函数设计好的散列函数应该均匀分布减少冲突负载因子存储元素数量与哈希表大小的比值影响性能冲突处理选择合适的冲突解决方法动态扩容当负载因子过高时需要考虑扩容总结哈希表通过建立 key 到存储位置的直接映射关系实现了快速的数据访问和查找是计算机科学中非常重要的数据结构之一。9. 实践示例统计字符串中出现次数最多的字母下面是一个统计字符串中出现次数最多的字母的Python示例以及常见的错误分析# 读取一个整数 n表示接下来有 n 行字符串要处理nint(input())# 循环 n 次每次处理一行字符串foriinrange(n):# 读取当前行的字符串题目保证只含小写字母但为了安全我们后面过滤sinput()# 创建一个长度为 26 的列表用来记录 a~z 每个字母出现的次数# 26 * [0] 和 [0] * 26 效果相同都是生成包含 26 个 0 的列表count26*[0]# 遍历字符串中的每一个字符forcharins:# 只处理小写字母避免空格、数字、大写字母等干扰ifacharz:# 计算当前字母在 count 列表中的索引a-0, b-1, ..., z-25idxord(char)-ord(a)# 该字母出现次数加 1count[idx]1# 开始查找出现次数最多的字母max_freq0# 当前最大出现次数初始为 0max_idx-1# 当前最大次数对应的字母索引-1 表示尚未找到# 遍历 26 个字母的计数forminrange(26):ifcount[m]max_freq:# 发现更大的出现次数更新最大值和对应索引max_freqcount[m]max_idxm# 注意这里用的是 而不是 所以当次数相同时不会更新# 这样就会保留索引较小的字母也就是字母顺序更小的那个符合题目默认要求# 将索引转换回对应的字母# ord(a) max_idx 得到该字母的 Unicode 编码chr() 将其转成字符resultchr(ord(a)max_idx)# 输出这一行的结果print(result)常见错误分析错误①range(s) 使用字符串作为参数错误代码forjinrange(s):报错TypeError: str object cannot be interpreted as an integer原因range()函数只接受整数参数而s是字符串类型。正确做法想遍历字符串的每个字符可以直接用for char in s:或者用for i in range(len(s)):再通过索引取字符。错误②把变量名写成字符串字面量错误代码chord(char)-ord(a)报错TypeError: ord() expected a character, but string of length 4 found原因char是一个长度为 4 的字符串由 c、h、a、r 四个字符组成而ord()函数要求传入单个字符。你本意是用循环变量char却误加了引号变成了固定字符串。正确做法变量名不能加引号应写成ord(char)。哈希思想在本例中的应用这个例子实际上使用了哈希思想哈希函数ord(char) - ord(a)将字母映射到 0-25 的索引直接访问通过索引直接访问count数组中的对应位置快速统计时间复杂度为 O(n)其中 n 是字符串长度这种方法比使用字典Python 内置的哈希表实现更高效因为数组的访问速度更快且空间固定为 26。

相关新闻

从零写一个工控多协议通讯库(一):架构与取舍

从零写一个工控多协议通讯库(一):架构与取舍

📌 本文首发于我的个人博客 talkplc.com,同步发布于 CSDN。原文链接:https://talkplc.com/2026/07/18/talkplc-architecture/ 上一篇把 Modbus 一帧报文逐字节拆开讲了。这一篇往上走一层:与其每个项目都重写一遍 Modbus/西门子/三…

2026/7/20 19:11:12 阅读更多 →
PSWinReportingV2 vs 传统日志工具:为什么它是AD事件监控的最佳选择?

PSWinReportingV2 vs 传统日志工具:为什么它是AD事件监控的最佳选择?

PSWinReportingV2 vs 传统日志工具:为什么它是AD事件监控的最佳选择? 【免费下载链接】PSWinReporting This PowerShell Module has multiple functionalities, but one of the signature features of this module is the ability to parse Security log…

2026/7/21 22:25:12 阅读更多 →
为什么你的AI音乐永远赚不到钱?——3大隐性变现断点曝光,错过本周将涨价

为什么你的AI音乐永远赚不到钱?——3大隐性变现断点曝光,错过本周将涨价

更多请点击: https://codechina.net 第一章:为什么你的AI音乐永远赚不到钱?——3大隐性变现断点曝光,错过本周将涨价 你精心训练的LoRA模型能生成媲美Billboard前10的旋律,但上架Bandcamp三个月零订单;你用…

2026/7/22 5:30:18 阅读更多 →

最新新闻

能源产业数字化创新平台扩容合作,中网B2B战略定位咨询升级企业市场战略定位

能源产业数字化创新平台扩容合作,中网B2B战略定位咨询升级企业市场战略定位

在当今快速发展的能源产业中、数字化创新平台的扩容正成为行业转型的核心力量。这些平台除了为企业提供了数据共享与资源整合的渠道市场响应能力。中网依靠优化B2B战略定位咨询、帮助企业深入理解市场需求市场战略。这让企业在激烈竞争中更具备优势,有效推动智能化进…

2026/7/23 12:59:17 阅读更多 →
智能装备研发制造企业突破增长瓶颈,中网B2B战略咨询重构长效发展战略定位

智能装备研发制造企业突破增长瓶颈,中网B2B战略咨询重构长效发展战略定位

在当前经济环境下,智能装备领域的研发与制造企业正遇到不少增长难题。要找出解决之道,这意味着企业不仅要重视技术革新,也需要对市场需求作出切实调整。中网B2B的顾问服务依托专业的市场分析与行业洞察,帮助企业重新定位发展目标。…

2026/7/23 12:59:17 阅读更多 →
TM4C1294 GPIO寄存器配置与中断处理实战指南

TM4C1294 GPIO寄存器配置与中断处理实战指南

1. 项目概述与核心价值 在嵌入式开发的日常工作中,GPIO(通用输入输出)的配置与中断处理,就像是我们与物理世界对话的“第一道门”。无论是点亮一个LED,还是读取一个按键,或是与传感器进行通信,都…

2026/7/23 12:59:17 阅读更多 →
VMware虚拟机搭建CentOS开发环境完整指南

VMware虚拟机搭建CentOS开发环境完整指南

1. 虚拟机环境搭建基础作为一名有十年Linux系统管理经验的工程师,我经常需要为团队搭建测试环境。VMware Workstation Pro作为业界最成熟的虚拟化平台之一,其稳定性和兼容性在开发测试场景中表现尤为突出。最新17.5.2版本对Linux发行版的支持度达到98%&a…

2026/7/23 12:59:17 阅读更多 →
InterMT:多模态大语言模型理解与生成的协同优化

InterMT:多模态大语言模型理解与生成的协同优化

1. 项目背景与核心问题在2025年NeurIPS会议上,一篇题为《InterMT: 揭秘多模态理解与生成的协同之路》的Spotlight论文引发了广泛关注。这篇论文直指当前多模态大语言模型(MLLMs)发展的核心瓶颈:理解与生成能力之间的割裂问题。我们观察到,现有…

2026/7/23 12:59:17 阅读更多 →
Stable Diffusion提示词反推到底有多难?揭秘Top 5反推工具实测数据与失效场景避坑指南

Stable Diffusion提示词反推到底有多难?揭秘Top 5反推工具实测数据与失效场景避坑指南

更多请点击: https://intelliparadigm.com 第一章:Stable Diffusion提示词反推到底有多难?揭秘Top 5反推工具实测数据与失效场景避坑指南 提示词反推(Prompt Inversion / Prompt Recovery)并非简单逆向解码&#xff0…

2026/7/23 12:58:17 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

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

月新闻