【基础算法】字符串哈希( 二 )

<= n; i ++ ){h[i] = h[i - 1] * P + str[i];p[i] = p[i - 1] * P;}while (m -- ){int l1, r1, l2, r2;scanf("%d%d%d%d", &l1, &r1, &l2, &r2);if (get(l1, r1) == get(l2, r2)) puts("Yes");else puts("No");}return 0;}
代码解析:
1.解决冲突:
typedef unsigned long long ULL;//将P和Q设定的非常好,就可以极大概率避免冲突(99.999%)://P=131or13331const int N = 100010, P = 131; //Q=2^64^;//这里取Q=2^64^,这里可以直接定义哈希数组为unsigned long long ,//它会使超过2^64^的数溢出,溢出的值就等价于对2^64^取模 。int n, m;char str[N];ULL h[N], p[N];//p[N]是存放要乘以p的多次方
2.scanf(“%s”, str + 1);
scanf("%s", str + 1);//因为如果直接用 scanf("%s",str); 的话,就会出现一个问题://scanf函数遇到空格或TAB,就会停下来 。所以用指针的方式就可以防止这种情况发生 。//输入str第一个元素之后的字符串,给str[1]赋值
? 最后
十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:
1.莫言在《晚熟的人》当中说:真正的强大不是忘记,而是接受接受分道扬镳,接受世事无常,接受孤独挫败,接受突如其来的无力感,接受自己的不完美,接受困惑、不安、焦虑和遗憾,调整自己的状态,找到继续前行的力量,成为更好的自己 。是的,与其苦苦的想忘记,不如坦然接受 。
2.接受你最闪耀的时候,不骄傲;接受你最糟糕的时候,不气馁;接受你最平淡无奇的时候,不放弃 。正如王朔对女儿说的:内心强大到混蛋,比什么都重要 。
3.三毛曾说过:“给自己时间,不要焦急,一步一步来,一日一日过,请相信生命的韧性是惊人的,跟自己的心去合作,不要放弃对自己的爱护 。
4.当你的能力还驾驭不了你的目标时,你就应该沉下心来历练 。祛除杂念,不好高骛远,也不轻言放弃 。信手拈来的从容都是厚积薄发的沉淀,找到一个准确的定位,认真打磨自己,慢慢就能变得波澜不惊,在喧嚣中宁静致远 。但愿你心安,向内探求不停,做有心的蓄积者,沉淀自己,升华自己 。
5.有心栽花花不开,无心插柳柳成荫 。生活有时候很有意思,你越是用力证明,越感觉疲惫 。越是对一件事的结果产生执念,就越反着来 。太过用力,本身就是一种消耗,反而适得其反,用温柔的力量,反而能厚积薄发,就像发条上的太紧容易断,该放松时放松,该努力时努力,张弛有度才刚刚好 。不骄不躁,抚平心态,才能看到更好的阳光 。不要一味地追求太紧绷的用力,人生最坏的结果不过是大器晚成 。
?
最后如果觉得我写的还不错,请不要忘记点赞?,收藏?,加关注?哦(??ω??)
愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚菜鸟逐渐成为大佬 。加油,为自己点赞!
?
【【基础算法】字符串哈希】?