当前位置: 首页 > wzjs >正文

个人主页网站一手项目对接app平台

个人主页网站,一手项目对接app平台,wordpress的站 做固定链接301重定向对百度的影响,php动态网站开发案例教程答案目录 一、例题acwing841. 字符串哈希 -前缀哈希 二、例题洛谷P3370 字符串哈希-set哈希 三、其他哈希题-力扣网站 字符串哈希是一种高效的字符串比较与查找方法,它通过将字符串映射为数字,使得两个字符串相等当且仅当其哈希值相等。 字符串一一映射为…

目录

一、例题acwing841. 字符串哈希 -前缀哈希

二、例题洛谷P3370 字符串哈希-set哈希

三、其他哈希题-力扣网站


字符串哈希是一种高效的字符串比较与查找方法,它通过将字符串映射为数字,使得两个字符串相等当且仅当其哈希值相等。

字符串一一映射为数字,两个数字相等完全等价于字符串相等。

【C++算法模板】字符串哈希,超详细注释带例题_字符串哈希模板-CSDN博客  ----推荐学习博客

一、例题acwing841. 字符串哈希 -前缀哈希

yxc版
核心思想:将字符串看成P进制数,P的经验值是131或13331,取这两个值的冲突概率低
小技巧:取模的数用2^64,这样直接用unsigned long long存储,溢出的结果就是取模的结果typedef unsigned long long ULL;
ULL h[N], p[N]; // h[k]存储字符串前k个字母的哈希值, p[k]存储 P^k mod 2^64
// 初始化
p[0] = 1;
for (int i = 1; i <= n; i ++ )
{
h[i] = h[i - 1] * P + str[i];
p[i] = p[i - 1] * P;
}
// 计算子串 str[l ~ r] 的哈希值
ULL get(int l, int r)
{
return h[r] - h[l - 1] * p[r - l + 1];
}
#include<bits/stdc++.h>
using namespace std;// 定义无符号长整型别名UL
typedef unsigned long long ULL;
// 定义常量N表示字符串的最大长度,P为哈希计算时的底数
const int N = 100010, P = 131;
// 数组h用于保存从字符串起始位置到第i个字符的哈希值(即前缀哈希值),这样可以方便地通过已有的前缀哈希值来计算任意子字符串的哈希值
ULL h[N];
// 数组p用于保存P的i次幂,在计算哈希值过程中会用到
ULL p[N];
char str[N];// 函数get用于计算子串从位置l到位置r的哈希值
// 通过利用前缀哈希值h以及P的幂次p来快速计算出指定子串的哈希值
ULL get(int l, int r)
{// 具体计算方式是用位置r的前缀哈希值h[r]减去位置l - 1的前缀哈希值h[l - 1]乘以P的(r - l + 1)次幂return h[r] - h[l - 1] * p[r - l + 1];
}int main()
{int n, m;// 读取输入的字符串长度n和询问次数m,同时将输入的字符串存储到str数组中,从str[1]开始存储scanf("%d %d%s", &n, &m, str + 1);// 初始化p[0]为1,因为任何数的0次幂都为1,这是后续计算P的幂次的基础p[0] = 1;// 循环计算P的幂次p[i]以及字符串的前缀哈希值h[i]for (int i = 1; i <= n; i++){// 计算P的i次幂,即p[i]等于p[i - 1]乘以Pp[i] = p[i - 1] * P;// 计算从字符串起始位置到第i个字符的前缀哈希值h[i]// 计算方式是用上一个位置的前缀哈希值h[i - 1]乘以P再加上当前字符str[i]的ASCII码值h[i] = h[i - 1] * P + str[i];}while (m--){int l1, r1, l2, r2;cin >> l1 >> r1 >> l2 >> r2;if (get(l1, r1) == get(l2, r2))puts("Yes");elseputs("No");}return 0;
}

二、例题洛谷P3370 字符串哈希-set哈希

#include<iostream>
#include<set>
using namespace std;set<string> se;int main()
{string s;int n;cin>>n;for(int i=0;i<n;i++){cin>>s;se.insert(p);}cout<<se.size();return 0;
}

#include <bits/stdc++.h>
using namespace std;
const int P = 131, N = 10010;
typedef unsigned long long ULL;
string str;
ULL h[N], p[N];int main() {int n;cin >> n;p[0] = 1;// 使用集合来存储已经出现过的哈希值set<ULL> hashSet;for (int i = 1; i <= n; i++) {cin>>str;int len = str.size();for (int j = 1; j <= len; j++) {p[j] = p[j - 1] * P;h[j] = h[j - 1] * P + str[j ];}// 将当前字符串的完整哈希值加入集合hashSet.insert(h[len]);}// 集合中元素的个数就是不同字符串的数量cout << hashSet.size();return 0;
}

三、其他哈希题-力扣网站

1790. 仅执行一次字符串交换能否使两个字符串相等 - 力扣(LeetCode)双指针算法 简单
976. 三角形的最大周长 - 力扣(LeetCode)排序+简单贪心 简单
1207. 独一无二的出现次数 - 力扣(LeetCode)哈希map统计次数+set查次数是否唯一 简单
234. 回文链表 - 力扣(LeetCode)双指针算法 简单
1. 两数之和 - 力扣(LeetCode)hash map 较简单
1920. 基于排列构建数组 - 力扣(LeetCode)简单的不能再简单
15. 三数之和 - 力扣(LeetCode)双指针算法 中等。。。其实也不难
http://www.dtcms.com/wzjs/525667.html

相关文章:

  • Wordpress收款方式seo网站优化推广
  • 最炫的网站长治seo顾问
  • 通信工程企业网站建设互联网推广方案
  • 天津做网站好的公司有哪些51网站统计
  • 红和蓝的企业网站设计怎么制作公司网站
  • 做新媒体每天必看的网站网站模板及源码
  • 推广自己的网站需要怎么做免费网站大全下载
  • 建站网站那个好长治网站seo
  • 做面点的网站seo工作内容
  • 做电影网站失败了百度统计数据
  • 保定电子商务网站建设东莞seo技术
  • 网站建设需要几十万今天最新的新闻头条
  • wordpress.html插件关键词首页排名优化公司推荐
  • 网站防封链接怎么做苏州排名搜索优化
  • wordpress 设置常规站点地址百度投诉中心热线
  • 嘉兴做网站美工的工作百度热搜榜排名今日头条
  • 专业网站制作设计公司哪家好seo排名点击器
  • 设计网站p站谷歌竞价排名推广公司
  • 做亚马逊有哪些网站可以清货百度指数排名
  • 网站建设深圳官网网站流量统计系统
  • 西固网站建设排名
  • 珠海响应式网站建设费用怎样打小广告最有效
  • 政务网站建设惠州seo推广公司
  • 做打鱼网站需要多少钱基本seo技术在线咨询
  • 做电商平台网站seo网站推广全程实例
  • 濮阳网站怎么做seo应用市场
  • 网站后台超链接怎么做2023年8月新冠又来了
  • wordpress上传gif关键词优化推广公司哪家好
  • 陕西省建设厅便民服务网站百度推广登陆后台
  • 大型的营销型网站北京网络seo推广公司