这里记录一下回文数的一个快速的判断方法
采用了一种增加#字符的方式,使得最终算法可以通过O(n)来实现
class Solution {
public:
int minCut(string s) {
int index = 0;
int mr = 0;
string exS = "#"
for (int i = 0; i < s.length(); i++)
{
exS = exS.push_back(s[i])+"#";
}
vector <int> rd(exS.size(), 0);
for (int i = 1; i < exS.size() ; i++)
{
if (i >= mr)
{
rd[i] = 1;
}
else
{
rd[i] = min(rd[2*idx-i], mr-i)
}
if (rd[2*id -i] != mr -i && mr > i)
{
continue;
}
while (s[i - rd[i]] == s[i+rd[i]])
{
rd[i]++;
}
if (i+rd[i] > mr)
{
mr = i+rd[i] ;
id = i;
}
}
}
};