字符串查找之 hash法 + 前缀和

本文介绍了在字符串查找中使用hash法和前缀和的方法。首先阐述了为何选择hash法,尽管其时间效率低于trie树,但代码简洁。接着详细解释了hash的定义、计算方法(包括对字串取模)以及如何利用unordered_set进行查找。随后,文章讨论了前缀和的概念,如何通过预先计算和存储子字串hash以实现快速查询。最后,作者提醒可能存在错误,欢迎大家提问交流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、缘起

昨晚被学弟拉去打比赛,没能给同研习组的兄弟们做ppt报告题目。就在这里为大家介绍另一个字符串查找的方法吧。

二、前言

1、关于trie

我们都知道trie是hash树的一种,所以显而易见的,很多能用trie解决的问题,也可以用hash法加上前缀和来解决。

2、为什么要使用hash法

虽然时间效率上不如trie,但是代码简洁易懂,所以在两种方法都可以使用时,我推荐大家可以直接用hash法。

三、介绍

1、hash

①hash的简单定义

所谓字符串hash,就是用一个特定的函数给每个字符串算出一个hash数值,尽可能使得每一个hash数值都不一样。

②hash的求法

a.把字串当成数

比较直觉的是,我们可以把只包含小写字母的字串当作是一个base=27的数。
例如:令a,b,c,d……x,y,z依次代表1,2,3,4……25,26,27
'abcd' = a*1000+b*100+c*10+d //注意这里的1000 100 10 都是27进制的数
也可以写成 'abcd' = a*base^3+b*base^2+c*base^1+d
我们可以通过简单的计算把字符串和数值一对一对应。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值