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

asp.net 网站开发框架为什么要懂seo

asp.net 网站开发框架,为什么要懂seo,学校网站建设情况说明书,wordpress菜单选项字符串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.yayakq.cn/news/343227/

相关文章:

  • 广东省网站集约化建设通知怎么让百度收录网址
  • 建设通属于官方网站旅游分析 网站
  • 做兼职网上哪个网站深圳做h5网站制作
  • 互联网广告投放代理公司阿里巴巴关键词排名优化
  • 营销型网站有哪些桂林做网站多少钱
  • 百度广告联盟网站wordpress提示插件安装插件
  • 网站价格表长春平原网站建设
  • 合肥市建设工程市场价格信息网站方城网站设计
  • php html5企业网站源码最好的完全免费开源企业网站
  • ppt模板网站排行响应式网站开发遇到的问题
  • 成都青羊网站建设泰安人才网档案查询
  • 网站设计一般多少钱一个页面河南住房和城乡建设厅职称网站
  • c2c网站名称和网址常州知名网站
  • 秒收网站北京高级网站开发
  • 在家做私房菜的网站网站建站的方式主要有哪几种
  • 网站建设功能需求方案苏州专业网站建设开发
  • 软件开发 网站开发区别网络服务有哪些与影响
  • .asp网站怎么做怎样做网络推广教学设计
  • 正规专业的互联网代做毕业设计网站wordpress js插件开发教程视频
  • 网站开发实战 王简述电子政务系统网站建设的基本过程
  • 行业网站建站青岛公司广东省建设厅官方网站网址
  • 28网站开发深圳做网站建设开发
  • 宣传网站建设意义wordpress如何秒开
  • 免费的在线设计网站网站首页的动态效果图怎么做
  • react网站开发镇雄县城乡建设局网站
  • wordpress建站网网络营销外包公司上班
  • 网站建设需要什么硬件和软件上海商城网站开发
  • 怎么更换网站logo软件外包网站
  • 杨家平网站建设流量最大的网站
  • 利用万网做网站婚纱摄影网页模板