回文分割
将一个很长的字符串,分割成一段一段的子字符串,子字符串都是回文字符串。
有回文字符串就输出最长的,没有回文就输出一个一个的字符。
例如:
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; }