【4.10日题解】——字符串哈希(c代码表述)

简介: 【4.10日题解】——字符串哈希(c代码表述)

☘前言☘

今日份水题开始。希望有想要提高的同学跟我们一起来刷题0.0

P3370 【模板】字符串哈希


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)

⏳全文大约阅读时间: 20min


全文目录

☘前言☘

解题思路

📑写在最后

P1540 [NOIP2010 提高组] 机器翻译


解题思路

随手写一个链式hash就好了,需要注意的是,内存,内存,内存!!!!c语言的精华就是内存管理,我就是个菜鸡。。。记录字符串用于比较的时候一定要新开一端区域,不然的话就是错的!!!!


#include <cstdio>
#include <cstring>
#include <cstdlib>
const int maxn = 49999;
int count = 0;
struct node{
    char *s;
    node *next;
};
node * HashTable[maxn];
void HashInsert(char *str){
    int hashnum = 0,n = 0;
    for(int i = 0;str[i];++i){
        hashnum *= 128;
        hashnum += str[i];
        hashnum %= maxn;
        ++n;
    }
    node *p = HashTable[hashnum];
    while(p){
        if(strcmp(p->s,str) == 0)   return;
        p = p->next;
    }
    ++count;
    p = (node *)malloc(sizeof(node));//头插法
    char *tmp = (char *)malloc(sizeof(char) * (n + 1));
    memset(tmp,0,n+1);
    strcpy(tmp,str);
    p->s = tmp;
    p->next = HashTable[hashnum];
    HashTable[hashnum] = p;
}
int main(){
    int n;
    scanf("%d", &n);
    count = 0;
    memset(HashTable,0,sizeof(HashTable));
    while(n--){
        char s[1509];
        scanf("%s",s);
        HashInsert(s);
    }
    printf("%d\n",count);
    return 0;
}




相关文章
|
存储 缓存 内存技术
USB容量大小对传输速度影响有多大
USB容量大小对传输速度影响有多大
USB容量大小对传输速度影响有多大
|
Web App开发 安全 数据安全/隐私保护
IP电话交换机WebRTC使用方法一
WebRTC 简介 WebRTC 是网络实时通信的缩写(Web Real-Time Communication), 是一种支 持网页浏览器进行实时语音通话的技术。在 CooVox V2 IP PBX电话交换机 中成功运用该技术实现网 页分机,为企业用户提供了一个直接与客户沟通交流的免费平台。网页分机是指在 Web 浏览器中通过使用 WebRTC 的方式注册的分机号。客户可以通过企业网站直接与企业人员 通话寻求支持。
|
SQL Oracle 关系型数据库
Navicat15安装使用教程全网最细)
Navicat15安装使用教程全网最细)
433 1
Navicat15安装使用教程全网最细)
|
JavaScript 前端开发 安全
如何学好JavaScript:从初学者到专家的学习指南
JavaScript是一门强大的编程语言,用于在网页上创建交互性和动态性。无论你是初学者还是有经验的开发者,学好JavaScript都是一个有价值的追求。这篇文章将指导你如何系统地学习JavaScript,并逐步提升你的技能水平,从初学者到专家。
|
IDE Java 开发工具
C语言入门(前期准备工作)——超级详细的建议和教学,带你顺利跨越编程门槛
C语言入门(前期准备工作)——超级详细的建议和教学,带你顺利跨越编程门槛
|
存储 算法 安全
【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学
【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学
404 0
|
API 异构计算
SurfaceView 和 TextureView
SurfaceView 和 TextureView
597 0
|
JavaScript 前端开发 算法
从入门到项目实战 - vue2 与 vue3 中实现全局事件总线
本文介绍 vue2 与 vue3 中实现全局事件总线
544 0
|
网络协议 Oracle 安全
java TCP/UDP、Socket、URL网络编程详解
java TCP/UDP、Socket、URL网络编程详解
766 0
|
Ubuntu Linux 开发工具
ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发(一)
ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发
858 0
ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发(一)