网易笔试:字符串回文分割

来源:互联网 发布:西安公路研究院java 编辑:程序博客网 时间:2024/06/05 10:19
将一个很长的字符串,分割成一段一段的子字符串,子字符串都是回文字符串。
有回文字符串就输出最长的,没有回文就输出一个一个的字符。
例如:
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;}


原创粉丝点击