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

AAP网站开发需要多少钱全球搜怎么样

AAP网站开发需要多少钱,全球搜怎么样,网站建设和开发,wordpress 3.4.2字符串Hash就是构造一个数字使之唯一代表一个字符串。但是为了将映射关系进行一一对应,也就是,一个字符串对应一个数字,那么一个数字也对应一个字符串。 用字符串Hash的目的是,我们如果要比较一个字符串,我们不用直接比…

字符串Hash就是构造一个数字使之唯一代表一个字符串。但是为了将映射关系进行一一对应,也就是,一个字符串对应一个数字,那么一个数字也对应一个字符串。
用字符串Hash的目的是,我们如果要比较一个字符串,我们不用直接比较字符串,而是比较它对应映射的数字,这样子就知道两个“子串”是否相等。从而达到,子串的Hash值的时间为 O(1),进而可以利用“空间换时间”来节省时间复杂的。
#######################################
给定一个长度为 n
的字符串,再给定 m
个询问,每个询问包含四个整数 l1,r1,l2,r2
,请你判断 [l1,r1]
和 [l2,r2]
这两个区间所包含的字符串子串是否完全相同。

字符串中只包含大小写英文字母和数字。

输入格式
第一行包含整数 n
和 m
,表示字符串长度和询问次数。

第二行包含一个长度为 n
的字符串,字符串中只包含大小写英文字母和数字。

接下来 m
行,每行包含四个整数 l1,r1,l2,r2
,表示一次询问所涉及的两个区间。

注意,字符串的位置从 1
开始编号。

输出格式
对于每个询问输出一个结果,如果两个字符串子串完全相同则输出 Yes,否则输出 No。

每个结果占一行。

数据范围
1≤n,m≤105
输入样例:
8 3
aabbaabb
1 3 5 7
1 3 6 8
1 2 1 2
输出样例:
Yes
No
Yes

关键点:
字符串哈希值的计算:通过前缀哈希值,可以在常数时间内计算任意子串的哈希值。在这里,使用了 get 函数来计算 [l, r] 子串的哈希值。

进制选择:选择一个适当的进制是关键,这里使用了常用的质数 131(    常用P 还可以= 133313)。质数的选择可以减小哈希冲突的可能性。前缀哈希值的快速计算:通过累积进制的幂,可以在常数时间内计算前缀哈希值。这里使用了 p 数组存储进制的幂,h 数组存储前缀哈希值。字符串比较:通过比较两个子串的哈希值是否相等,可以在常数时间内完成字符串的比较。这在一些算法中能够提高效率,例如字符串的快速匹配等。
#include <iostream>using namespace std;typedef unsigned long long ULL;  // 使用 unsigned long long 类型表示哈希值const int N = 100010, P = 131;  // N 表示字符串长度的最大值,P 是选择的哈希进制int n, m;
ULL h[N], p[N];  // h 存储前缀哈希值,p 存储进制的幂
char str[N];  // 输入的字符串ULL get(int l, int r)
{return h[r] - h[l - 1] * p[r - l + 1]; // 计算字符串 [l, r] 的哈希值,使用前缀哈希值的差值表示子串哈希值
}int main()
{scanf("%d%d%s", &n, &m, str + 1);p[0] = 1;for(int i = 1; i <= n; i ++ ){p[i] = p[i - 1] * P;  // 计算进制的幂h[i] = h[i - 1] * P + str[i];  // 计算前缀哈希值}while(m -- ){int l1, r1, l2, r2;scanf("%d%d%d%d", &l1, &r1, &l2, &r2);if(get(l1, r1) == get(l2, r2)) printf("Yes\n");  // 比较两个子串的哈希值是否相等else printf("No\n");}return 0;
}

代码中:
h[i] = h[i - 1] * P + str[i];是字符串哈希的递推计算方式,称为Rolling Hash。

在这个式子中,h[i] 表示字符串的前 i 个字符的哈希值。它通过前一个状态 h[i-1],乘以进制 P,再加上当前字符 str[i] 的 ASCII 码,得到当前状态 h[i]。

这个计算过程实际上是一种累积计算,每次迭代都基于前一个状态进行更新。由于使用了进制 P,每一次迭代都相当于在前一个状态的基础上左移一位,并加上新字符的贡献。

这样计算的好处在于,每次只需要常数时间就能够更新哈希值,使得整个字符串的哈希值的计算复杂度是线性的。在很多字符串匹配、子串比较的算法中,这种哈希计算方式可以提高效率。需要注意的是,为了避免整数溢出,通常需要选择一个适当的大质数作为进制 P。

http://www.hrbkazy.com/news/5068.html

相关文章:

  • 湘潭网站建设方案表格网上教育培训机构排名
  • 重庆技术支持 网站建设公司安卓排名优化
  • wordpress作者上海比较好的seo公司
  • 临安网站建设公司网站推广和网络推广
  • 南山做网站哪家专业西安网站seo公司
  • 动态网站建设教程域名注册信息怎么查
  • 新手学做网站推荐软件谷歌paypal官网下载
  • 建设大型网站建设谷歌商店官网下载
  • 南宁做网站找哪家公司品牌传播推广方案
  • 定远县建设小学网站关键词词库
  • 织梦网站地图怎么做站长素材网站官网
  • wordpress打开有背景音乐福州百度快速优化排名
  • 麻涌镇网站仿做下载百度地图2022最新版
  • 深圳网站设计 制作元今日国内新闻大事20条
  • 网站开发不让搜索引擎seo网络优化专员是什么意思
  • 专业做网站设计百度电商平台app
  • 太原网站网络推广广州新塘网站seo优化
  • 东营网站制作公司百度最新推广产品
  • 上海网站建设服务市价百度客服人工在线咨询
  • 东莞淘宝运营seo收录排名
  • 做网上任务赚钱的网站有哪些成都今天宣布的最新疫情消息
  • 城乡建设与管理委员会网站广告公司接单软件
  • 在线做mtv网站口碑营销的重要性
  • 好玩的html网页代码seo秘籍优化课程
  • 深圳网站建设制作品牌公司网站域名在哪买
  • 网站制作是怎样做的深圳网络营销的公司哪家好
  • 电商网站推广怎么做淘宝美工培训
  • 交互做的比较好的网站山东建站
  • 怎么利用爬虫技术 提高网站排名百度推广开户费用多少
  • 企业建立自己的网站设计师必备的6个网站