hash处理相同前缀后缀
hash处理字符串获得相同前缀后缀
#define ull unsigned long long
const ll maxn = 1e5 + 7;
int id(char c)
{
return c - 'a' + 1;
}
vector<int> idx; //存储前缀后缀相同的前缀结束的i
const int p = 233;
void hash_pre_ans_tail(string s)
{
ull pre = 1, tail = 1, q = 1;
for (int i = 0; i < s.length() - 1; i++, q *= p)
{
if (i == 0)
pre = id(s[i]), tail = id(s[i]);
else
pre = pre * p + id(s[i]),
tail = tail + id(s[i]) * q;
cout << pre << " " << tail << endl;
if (pre == tail)
idx.push_back(i);
}
}
我看见 你

浙公网安备 33010602011771号