34:回文子串(1.7编程基础之字符串)

来源:互联网 发布:淘宝网购物女羽绒服 编辑:程序博客网 时间:2024/06/09 16:24

34:回文子串

总时间限制: 1000ms 内存限制: 65536kB
描述
给定一个字符串,输出所有长度至少为2的回文子串。

回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。

输入
一个字符串,由字母或数字组成。长度500以内。
输出
输出所有的回文子串,每个子串一行。
子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出。
样例输入
123321125775165561
样例输出
33
11
77
55
2332
2112
5775
6556
123321
165561

#include <iostream>#include<string.h>using namespace std;//http://noi.openjudge.cn/ch0107/34///我觉得第二重循环的控制j的长度很有必要 int len;char a[550];bool f(int x,int y,int k){    bool b=true;    if(k%2==1){//奇数偶数两种情况         while(x+2<=y){            if(a[x]!=a[y]){                b=false;                break;            }            else{                x++;y--;            }        }    }    else if(k%2==0){        while(x+1<=y){            if(a[x]!=a[y]){                b=false;                break;            }            else{                x++;y--;            }        }    }    return b; }int main(int argc, char *argv[]) {    cin>>a;    len=strlen(a);    for(int i=2;i<=len;i++){        for(int j=0;j<=len-i;j++){//需要仔细考虑临界值             bool b=f(j,j+i-1,i);            if(b){                for(int k=j;k<=j+i-1;k++){                    cout<<a[k];                }                cout<<endl;            }        }    }    return 0;}

9.15又写了一遍,奇数偶数情况可以一起处理

#include <iostream>#include<string.h>using namespace std;//http://noi.openjudge.cn/ch0107/34/char a[600];int len,n,flag;int main(int argc, char *argv[]) {    while(cin>>a){        len=strlen(a);        n=2;//循环变量        while(n<=len){            for(int i=0;i<=len-n;i++){                int end=n+i-1,k=i;                flag=0;                while(end>=k+1){                    //奇数偶数情况可以一起做                    if(a[k]!=a[end]){                        flag=1;                        break;                    }                     k++;end--;                }                if(!flag){                    for(int j=i;j<=n+i-1;j++){                        cout<<a[j];                    }                    cout<<endl;                }            }            n++;        }     }    return 0;}
原创粉丝点击