C/C++ 统计回文子串······

题目描述
现在给你一个字符串S,请你计算S中有多少连续子串是回文串。
输入
输入包含多组测试数据。每组输入是一个非空字符串,长度不超过5000。
输出
对于每组输入,输出回文子串的个数。
样例输入
aba
aa
样例输出
4
3

时间限制:1 秒 内存限制: 32 MB
论坛上的代码已经被同学用去 机器会判抄袭 新手党没有C 币

http://blog.csdn.net/duan19920101/article/details/51482244

1楼我替你粘贴一下,楼主在在线等。。。

 [cpp] view plain copy print?
//最长回文子串  
#include <iostream>  

using namespace std;  

//*s为字符串,n为字符串的长度  
int LagPalindrome(char *str, int n)  
{  
    int count = 0;  
    int max = 0;//最长回文子串的长度  
    if (str == NULL || n<1)  
    {  
        return 0;  
    }  
    for (int i = 0; i < n; i++)  
    {         
        //子串为奇数时  
        for (int j = 0; (i-j)>=0&&(i+j)<n; j++)  
        {  
            if (str[i - j] != str[i + j])  
            {  
                break;  
            }  
            count = 2 * j + 1;  
        }  
        if (count > max)  
        {  
            max = count;  
        }  
        //子串为偶数时  
        for (int k = 0; (i - k)>=0 && (i + k + 1) < n; k++)  
        {  
            if (str[i - k] != str[i + k+1])  
            {  
                break;  
            }  
            count=2*k + 2;  
        }  
        if (count > max)  
        {  
            max =count ;  
        }  
    }  

    return max;  
}  

int main( )  
{  
    char str[] = "abccba";  
    int n = strlen(str);  
    int MaxLen;  
    MaxLen = LagPalindrome(str, n);  

    cout << "最长回文子串的长度是:"<<MaxLen<<endl;  

    return 0;  
}