鸣谢:感谢@July,您的博客给予我很大的帮助,增强了我学习的动力。希望分享的力量永传!!!
问题来源:http://blog.csdn.net/v_july_v/article/details/6712171
问题来源作者:@July
本文作者:@baoquanz
本文问题源于@July的文章,修正了@July关于回文代码的bug,现将本人代码发布如下。如发现有问题,还希望不吝赐教。谢谢。
#include <iostream>
#include <string>
using namespace std;
int Max_HuiWen(const string s)
{
if (s.empty())
{
return 0;
}
int i, j, len, max;
len = s.length();
max = 0;
for (i=0; i<len; ++i)
{
for (j=0; (i-j>=0) && (i+j<len); ++j) //如果回文长度是奇数
{
if (s[i-j] != s[i+j])
{
break;
}
}
if (j*2-1 > max) //实际上是:(j-1)*2+1 > max
{
max = j * 2 - 1;
}
for (j=0; (i-j>=0) && (i+j+1<len); ++j) //如果回文长度是偶数
{
if (s[i-j] != s[i+j+1])
{
break;
}
}
if (j*2 > max) //实际上是:(j-1)*2+2 > max
{
max = j * 2;
}
}
return max;
}
int main()
{
string s;
cin >> s;
int max = Max_HuiWen(s);
cout << "MAX: " << max <<endl;
return 0;
}