将一个很长的字符串,分割成一段一段的子字符串,子字符串都是回文字符串。
有回文字符串就输出最长的,没有回文就输出一个一个的字符。
例如:
habbafgh
有回文字符串就输出最长的,没有回文就输出一个一个的字符。
例如:
habbafgh
输出h,abba,f,g,h。
bool isPalindrome(const string& str,string::size_type i, string::size_type j)//判断是否回文
{
if(i>str.length() || i>j || j>str.length())
{
cout << "err!";
return false;
}
for( ;i<j;i++,j--)
{
if(str[i] != str[j])
{
return false;
}
}
return true;
}
void printAllMaxPalindrome(const string& str)
{
string::size_type end=str.length();
string::size_type i=0;
for(string::size_type start=0 ; start<end; )
{
for(i=end-1 ; i>=start; )
{
if(str[start]==str[i] && isPalindrome(str,start,i))
{
for(string::size_type j=start ; j<=i; j++)
{
cout << str[j];
}
cout <<",";
break;
}else{
i--;
}
}//for
start=i+1;
}//for
}
int main()
{
string s="aaaaaaaa";
//cout << isPalindrome(s,0,7);
printAllMaxPalindrome("abcdfrfdabdfrrfdaaaaa");//
system("pause");
return 0;
}