哈希娱乐- 哈希游戏平台- 游戏官方网站Hash在字符串中的应用_C
哈希官网,哈希娱乐,哈希平台,哈希游戏平台,哈希游戏玩法,哈希竞猜,哈希游戏官方网站哈希大家都会用撒,字符串显然都会写撒,那么哈希离散化字符串不就懂了?!(XXX的神逻辑,其实原文是:树都晓得吧,数组显然都会开呀,那么恭喜你学会了树状数组!)
例如我们给出 n 个长度为 m 的字符串,然后给你一个长度为 m 的字符串 s ,求 s 是否在之前的 n 个串中出现过
暴力扫 n 个串,然后一位位去对,看是否相等,时间复杂度O(nm),它非常得辣鸡
当然我们可以建一颗 trie 树做,但是建树的复杂度也是O(nm)的,对于只询问一次还不如打暴力
但是对于字符串呢?难道把它所有位加起来取模?显然是不行的,如 ab 和 ba 这两种情况是相同的,那么小节点挂的链会很多
于是乎,我们想,对于字符串只有256种,而题目中给的一般只会包含字母,甚至是只有小写字母,瞬间压缩到26种
那么我们可以把它前面 k 位取出来,如取4位出来是 axoc,把它装换成对应的数字是 0 23 14 2 (a 看做 0,b 看做 1 …… z 看做 25)
把前 k 位取出来,第 i 位即为这个26进制数的第 i 位,再把它转换为10进制,如 axoc 为45214,这样我们就得到了Hash 的Hash 函数了
对于 26 进制的数,int 范围下只能取到第 6 位,long long范围下可以取到第 13 位

题意很简单,给你一个串,求他有多少个不同的子串,满足前缀为A,后缀为B。 需要注意的是,串中所有的字母都是小写字母。
还有我的程序在 Hash 取别的位数的时候会 WA 几个点(而且还是不同的点??)
