您的位置:首页 > 其它

hdu 1544(求回文子串的个数)

2014-05-26 17:59 218 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1544

思路:枚举中间点,分为奇数长度和偶数长度,然后向两边扩展就可以了,如果不相等,就直接跳出;





1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 #define MAXN 5005
6 char str[MAXN];
7
8 int main(){
9     while(~scanf("%s",&str)){
10         int len=strlen(str),l,r;
11         int ans=len;
12         for(int i=0;i<len;i++){
13             l=i-1,r=i+1;//奇数长度
14             while(l>=0&&r<len&&str[l]==str[r]){
15                 l--,r++;
16                 ans++;
17             }
18             l=i,r=i+1;//偶数长度
19             while(l>=0&&r<len&&str[l]==str[r]){
20                 l--,r++;
21                 ans++;
22             }
23         }
24         printf("%d\n",ans);
25     }
26     return 0;
27 }
28


View Code
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: