ZOJ 2744 Palindromes

秒杀题,计算回文子串数。

#include <iostream>
#include <string>
using namespace std;
string str;
int fun(int strl,int strr)
{
    int num=0;
    while(strl>=0&&strr<str.length())
    {
        if(str[strl]==str[strr])
        {
            num++;
            strl--;
            strr++;
        }
        else break;
    }
    return num;
}
int main()
{
    int n,i;
    while(cin>>str)
    {
        n=0;
        n+=str.length();
        for(i=1;i<str.length()-1;i++)
        {
            n+=fun(i-1,i);
            n+=fun(i-1,i+1);
        }
        if(str[i]==str[i-1]) n++;
        cout<<n<<endl;
    }
    return 0;
}

posted @ 2011-04-20 22:45  watana  阅读(160)  评论(0编辑  收藏  举报