字符串hash

哈希——字符串哈希 哈希算法 阅读详情

问题: 

输入n个3个大写字母的字符串;

输入m个查询字符串;

输出对应查询字符串在n个字符串中出现的次数。

 

#include<iostream>
using namespace std;

const int maxn=100;
char S[maxn][5];
char temp[5];

int hashTable[26*26*26+10];

int hashFunc(char S[],int len)
{
	int ans=0;
	for(int i=0;i<len;i++)
	{
		ans=ans*26+(S[i]-'A');		
	}
	return ans;
}

int main()
{
	
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		cin>>S[i];
		int id=hashFunc(S[i],3);
		hashTable[id]++;
	}
	for(int i=0;i<m;i++)
	{
		cin>>temp;
		int id=hashFunc(temp,3);
		cout<<hashTable[id]<<endl;
	}
	return 0;
}

 

 

字符串哈希算法简单入门学习 字符串哈希算法 字符串哈希,最著名的就是BKDRHash,也就是将字符串变成数值,并且最后变成的数值是一个P进制的数(一班取131或者13331),一般来说P最好为素数.然后我们之所以需要前缀和,是因为我们这道题目是求一个区间的字符串,又因为是哈希表,所以我们得求出区间哈希和,又因为是是区间和,所以我们得用前缀和求O(n)预处理,来实现和哈希一般的O(1)常数级别查询.这种Hash常用,且... 阅读详情

相关推荐

字符串为键的自定义哈希表(暴雪字符串哈希算法)

这是个在暴雪字符串哈希算法基础上实现的哈希表。在代码实现上有一定优化。 设计上: 1)加密表是足够长的(unsigned long)无符号型数组。数组的值是由算法计算的固定的一些值。加密表是用来计算字符串(在某种子的情况下)的哈希值。 2)哈希值是字符串(大写)的所有的字符的ascii码相关的。使用单向散列函数,从概率上认为,不同字符串的3种不同的种子的3个哈希值不会是都是相同的。(计算的是10的22.3次方分之一的概率) 3)每个节点有3个hash值(hash1,hash2,hash3),hash1 是寻

陈嘉怡的专栏 4338

字符串哈希算法

哈希算法 字符串的哈希算法,通俗的理解,就是将一个字符串,转化成整数 原来我们进行字符串匹配的时候,就是一个个去匹配,那么时间复杂度是o(n),如果转化成数字,去匹配那么时间复杂度会变成o(1)。 哈希算法的引入 首先联想一下二进制数,对于任意一个二进制数,我们将它化为10进制的数的方法如下(以二进制数1101101为例): 1101101=1 * 2 ^ 6+1 * 2 ^ 5+0 * 2 ^ ...

a921893396的博客 5737

181字符串哈希【哈希算法】

字符串哈希把不同的字符串映射成不同的整数。 1.把字符串映射成一个p进制数字。 对于一个长度为n的字符串s, 这样定义Hash函数: 例如,字符串abc,其哈希函数值为ap^2+bp^1+c 即97×131^2+98×131^1+99 2.如果两字符串不一样,Hash函数值却一样,这样的现象称为哈希碰撞。 3.解决哈希碰撞的方法: 巧妙设置p和M的值,保证p与M互质。p通常取质数131或13331, M通常取大整数2^64,把哈希函数值h定义为ULL,超过则自动溢出,等价于取模。 1.求一个字符串的哈希值

lybc2019的博客 1170

算法---哈希及其在字符串中的应用(字符串hash)

字符串哈希详解及例题

Air_thc的博客 1998

字符串匹配:如何借助哈希算法实现高效字符串匹配?

哈希算法是一种将任意长度的输入数据转换为固定长度输出数据的算法。这个输出数据通常被称为哈希值或散列值。确定性:对于相同的输入数据,总是产生相同的哈希值。快速计算:可以在相对较短的时间内计算出哈希值。不可逆性:很难从哈希值反向推导出原始输入数据。常见的哈希算法有 MD5、SHA-1、SHA-256 等。

yonggeit的博客 3281

深入解析DisplayPort(DP)接口:从主链路到辅助通道的全方位技术剖析

本文深入解析DisplayPort(DP)接口的核心技术架构,重点剖析了其三大功能模块:承载视频/音频数据洪流的Main-Link主链路、负责链路训练与设备控制的AUX CH辅助通道,以及实现智能交互的HPD热插拔检测。文章详细阐述了主链路的可伸缩Lane配置、嵌入式时钟与数据成帧机制,以及辅助通道在设备发现、动态优化信号质量(链路训练)中的关键作用,揭示了DP接口实现高效率与灵活性的设计哲学。

weixin_29267307的博客 491

字符串哈希算法-斤斤计较的小Z

现在给出两个串 S1,S2(只有大写字母),求 S1 在 S2 中出现了多少次。将字符串看作一个多项式,每个字符的 ASCII 值作为系数,基数 b 作为变量。由于哈希值的范围有限,不同的字符串可能会映射到相同的哈希值(哈希冲突)。通过预处理前缀哈希值,可以在 O(1) 时间内计算任意子串的哈希值。为了快速计算任意子串的哈希值,字符串哈希算法通常需要预处理字符串的。通过选择合适的基数 b 和模数 M,可以尽量减少哈希冲突的概率。:尽可能减少哈希冲突,即不同的字符串映射到不同的哈希值。

2301_81354767的博客 774

ADS新手必看:ICCAP数据导入与导出CSV的完整流程(附常见问题解决)

本文为ADS新手详细讲解了如何将ICCAP测试数据导入ADS进行仿真分析,并导出为通用CSV格式的完整流程。内容涵盖文件格式解析、导入设置、数据验证、处理技巧及常见问题排查,重点解决了数据文件导入过程中的兼容性与单位映射等核心难点,帮助射频工程师高效连接测量与仿真环节。

peace的博客 558

哈希表和字符串哈希算法

哈希表(Hash Table)是一种数据结构,它可以通过一个哈希函数将键(key)映射到存储位置,从而实现高效的数据查找、插入和删除操作。哈希表的特点是能够在常数时间(O(1))内完成查找和更新,前提是哈希冲突处理得当。

buaichifanqie的博客 1230

别再模拟IIC了!用STM32F103C8T6的硬件IIC驱动AT24C64,CubeMX配置+避坑指南

本文详细介绍了如何使用STM32F103C8T6的硬件IIC驱动AT24C64 EEPROM,通过CubeMX配置和HAL库函数解析,提供从模拟IIC到硬件IIC的完整解决方案。内容包括硬件IIC与模拟IIC的核心差异、CubeMX工程配置详解、HAL库驱动实战以及典型问题诊断与优化,帮助开发者构建更稳定高效的存储系统。

weixin_27038245的博客 188

NRF52832调试方法1——HardFault_Handler问题定位

一、遇到问题 keil debug模式下,直接点击全速运行(Run)发现程序卡死,点击stop按钮后,停到了HardFault_Handler位置,如下图所示。 此时使用navigate backwards(蓝色左箭头)是无效的,找不到程序卡在哪里。 二、解决办法 此时首先观察register窗口 若Stack为MSP,则复制R13(SP)的值到memory观察窗的地址搜索栏。每一行显示连续的28个地址上的存储信息,每个地址上存有一个字节。 从第21个位置起的连续四个字节是LR的值,

小梁的博客 3651

字符串哈希——Hash

字符串哈希 字符串哈希,用通俗点的说法就是将一个字符串转换成一个整数,而且用哈希转换出来的整数,不同的字符串,不出意外整数也不一样(存在极少的情况一样),从而更方便地确定某个字符串是否重复出现过。 基本思想: 假设一个字符串:abcdabcd; 将整个字符串看成一个p(p一般取131或者13331比较好,可以减少冲突的概率)进制数,将a->z看成1->26;然后abcdabcd就变成了...

qq_46197193的博客 534

vivado2020.1使用vitis生成QSPI启动文件报错

在使用vivado2020.1使用vitis,生成QSPI启动文件时会报错,data2mem命令无法识别,这是因为data2mem是xilinx7series芯片的命令,当使用ultrascale/ultrascale+芯片时则需要使用updatemem命令,这或许是vitis的一个bug吧,明明选择的是ultrascale的芯片,却一直调用打她mem命令,挺麻烦的,需要手动执行,在XSCT console窗口执行的命令如下: updatemem -force -meminfo \ F:/xc7z35t/x

qq_32134427的博客 2336

djb2哈希算法内部揭秘:map哈希表库map_hash字符串哈希原理详解

**map** 是一个面向 C 语言的类型安全哈希表库,它的字符串哈希由 `map_hash` 函数实现,内核正是大名鼎鼎的 **djb2 哈希算法**——只用一个整型变量和一条“移位 + 异或”语句,就完成从键名到哈希桶的映射。本文带你逐行拆解 map_hash 字符串哈希原理,看懂 djb2 算法为什么又快又稳。 ## 一、什么是 djb2 哈希算法 djb2 由计算机科学家 Dan Be

gitblog_00195的博客 438

ENSP实验一:防火墙基础配置

配置client(内网)、FTP Server(外网)的IP地址。进入防火墙,输入密码:默认为admin@123。

Carohuan的博客 1万+

Halcon学习之一维测量(3)

带定位器的测量。首先看一下“定位”是什么意思?回答:比如我们测量一个芯片,这时候我们设置一个测量矩形,来沿着测量目标进行测量。但是下一张当芯片的位置发生变化时,测量矩形的位置就不对了,就不是沿着测量目标了。这样就不对了!芯片在转,测量矩形也要跟着一起转才行。这个时候就需要“定位”来起作用了!定位之后得到这个芯片的旋转角度之后,测量矩形可以跟着这个角度转。这就是“定位”+“测量”,这是我们工业视觉常用的一个手法,在Halcon里面也是有例子展现的。

deep_love1314的博客 788

字符串哈希(BKDR_hash)

当我们要判断两个字符是否相等时,如S1="abc",S2=“abb”。如果我们从头到尾逐个比较,则时间复杂度为O(m)。 这里我们就要用到字符串哈希来降到O(1)。 字符串哈希入门 说得通俗一点,字符串哈希实质上就是把每个不同的字符串转成不同的整数。 为什么会有这样的需要呢?很明显,存储一个超长的字符串和存储一个超大但是能存的下的整数,后者所占的空间会少的多,但主要还是为了方便判断一个字符串是否出现过,这是最基础的部分。 当然也很容易想到,如果有不同的字符串转成同一个整数,那么区分功能就基本废掉 ,所以我

带你回江南的博客 1357

南方电网专业面试题(电气类-继电保护)(目录)

南方电网专业面试题(电气类-继电保护)(目录) 这些面试题围绕继电保护的基本概念、工作原理、分类、性能要求,以及变压器、断路器、母线保护、自动重合闸等电力系统关键设备的保护机制和操作原则展开,旨在评估应聘者对电力系统保护和控制策略的深入理解和实际应用能力。

weixin_44808274的博客 2160

字符串哈希算法详解:原理、实现与应用

字符串哈希是一种高效处理字符串匹配和比较的技术,它通过将字符串映射为一个唯一的数值(哈希值),从而在O(1)时间内完成子串的比较。适用于需要频繁比较子串的场景,比直接暴力匹配高效得多。如果需绝对准确,可双哈希(用两个不同的P计算)。PP 是一个质数(通常取131或13331)。MM 是一个大数(如 264264,代码中用。的工作原理,并通过流程图逐步解析其执行过程。:预计算幂次,用于后续子串哈希计算。(比较哈希值而非原始字符串)。是质数,保证哈希分布均匀。(时间复杂度O(1))。常用的字符串哈希方法是。

不语的博客 1387

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

字符串哈希(BKDR_Hash)

详讲BKDR_Hash,并用C语言实现简版代码

日常记录,挨打要立正! 9765

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

字符串哈希(HASH)

一个字符串的哈希值。

cgl18973281319的博客 3295

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

字符串哈希算法的应用(超级实用)

字符串哈希的方法: 在刷一些字符串的题目中是非常实用的,是一个不得不掌握的“套路”。 下面讲述字符串哈希的方法。(主要是利用字符串的前缀哈希) 例如 : 字符串 str = “ABCD”; 第一步: 将上面的字符 映射成从1开始的 A - 1; B - 2 … 第二步: 将上面的字符串看成是一个P进制的数 (1234)p 。 这里的P 是一个经验值 : 131 或者是13331. 第三步: 然后将上面的P进制的数转换成 十进制的数字。 然后mod 一个数字264. 为了保证不冲突。 (1 * P..

刘小雨的博客 1022

【算法学习】字符串哈希(Hash)

什么是字符串Hash 构造字符串Hash 1)自然溢出方法 2)单Hash方法 3)双Hash方法 4)三种不同的构造方法的对比 获取子串的Hash O(1) 1)例子 2)公式 具体的题目例子 1)题目链接 2)题意 3)解题分析 4)AC代码(自然溢出 C++) 5)AC代码(单Hash C++) 6)AC代码(双Hash C++) 什么是字符串Hash ...

Mikchy的博客 4万+

字符串哈希(Hash)

所谓字符串哈希就是构造一个数字使之唯一代表一个字符串。 构造方法: 假如给你一个数字1166,形式上你只知道它只是1和6的组合,但你知道它代表的实际大小1*10^3+1*10^2+6*10^1+6*10^0。 同理,给你一个字符串,要把它转换为数字,就可以先把每一个字符都先对应一个数字,然后把它们按照顺序乘以进制的幂进行相加。 如abcd,我们取各个字母的ASCII码值减去a的ASCI...

Gaoithe的博客 8998

【字符串】字符串哈希hash算法

以洛谷P3370为引子引入吧: Part1. 浅谈哈希: 哈希其实是所有字符串操作中,笔者认为最简单的操作了(except输入输出qwq)。哈希的过程,其实可以看作对一个串的单向加密过程,并且需要保证所加的密不能高概率重复(就像不能让隔壁老王轻易地用它家的钥匙打开你家门一样qwq),通过这种方式来替代一些很费时间的操作。 比如,最常见的,当然就是通过哈希数组来判断几个串是否相同(洛谷P3370)...

Rainfoo的博客 988
上一篇: 1025 PAT Ranking (25分) 【成绩排名】
下一篇: n皇后问题
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值