用正反哈希判回文
用 unsigned long long 做前缀哈希:h[i+1] = h[i] × B + 字母序号(a 记 1),不取模,让它自然溢出。
一个串正着算一遍哈希、倒着再算一遍,两个一样就是回文。补全 is_pal,依次判断 abccba、abcba、abcd。
(本题用 g++ -std=c++17 -O0 编译。)
用 unsigned long long 做前缀哈希:h[i+1] = h[i] × B + 字母序号(a 记 1),不取模,让它自然溢出。
一个串正着算一遍哈希、倒着再算一遍,两个一样就是回文。补全 is_pal,依次判断 abccba、abcba、abcd。
(本题用 g++ -std=c++17 -O0 编译。)
全部评论