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);
    }
}
posted @ 2020-05-13 19:28  naymi  阅读(35)  评论(0)    收藏  举报