Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <string>using namespace std;string preProcess(string s){int len = s.length();if (len == 0)return "$";string ans = "$";for (int i = 0; i < len; i++)ans += "#" + s.substr(i, 1);return ans + "#";}int solve(string s){string T = preProcess(s);int len = T.length();int *p = new int[len];int mx = 0, id = 0;for (int i = 1; i < len; i++){p[i] = mx > i ? min(p[2*id-i], mx - i) : 1;while (T[i+p[i]] == T[i-p[i]])p[i]++;if (i + p[i] > mx){mx = i + p[i];id = i;