|for循环奇偶|最长对称子串 (25分)

5-7 最长对称子串 (25分) 对给定的字符串,
本题要求你输出最长对称子串的长度。
例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。

对每一位字符串检查是否为对称轴(奇数)
或者对称中心左边的第一个字符(偶数)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

///21
#include <iostream>
#include <cstdio>
using namespace std;
int maxn=0,len;
string s;

void zhongjian(int n);
void bianbian(int n);

int main(){
    
    

    getline(cin,s);
    len=s.length();
    for(int i=0;i<len;i++){
    
    
        zhongjian(i);
        bianbian(i);
    }
    
    cout<<maxn;
    return 0;
}
void zhongjian(int tmp){
    
    
    int len_zhongjian=1;
    //tmp=0(假设对称点在下标0)没有操作
    for(int i=1;tmp-i>=0&&tmp+i<=len-1;i++){
    
    
        if(s[tmp-i]==s[tmp+i]){
    
    
            len_zhongjian+=2;
        }else{
    
    
            break;
        }
    }
    if(len_zhongjian>maxn)maxn=len_zhongjian;
}

void bianbian(int tmp){
    
    
    int len_bianbian=0;
    for(int i=0;tmp-i>=0&tmp+i+1<=len-1;i++){
    
    
        if(s[tmp-i]==s[tmp+i+1]){
    
    
            len_bianbian+=2;
        }else{
    
    
            break;
        }
    }if(len_bianbian>maxn)len_bianbian=maxn;
    
} 
//Is PAT&TAP symmetric?
//s PAT&TAP s
//11
#include <iostream>
#include <cstdio>
using namespace std;
void zhongjian(int t);
void bianbian(int t);
int n,maxn=0;
string str;
int main()
{
    
    
    
    getline(cin,str);//Is PAT&TAP symmetric?
    n = str.length();//如果对称//21
    
    for(int i=0;i<n;i++){
    
    
        zhongjian(i);
        bianbian(i);
    }
    printf("%d",maxn);
    return 0;
}

void zhongjian(int t){
    
    
    int i,j=1;
    for(int i=1;t-i>-1&&t+i<n+1;i++){
    
    
        if(str[t-i]==str[t+i]){
    
    
            j+=2;
        }
        else break;
    }
    if(j>maxn)maxn=j;
}

void bianbian(int t){
    
    
    int i,j1=0,j2=0;
    for(i=0;t-i-1>-1&&t+i+1<n+1;i++){
    
    
        if(str[t-i-1]==str[t+i]){
    
    
            j1=j1+2;
        }else break;
    }
    if(maxn<j1)maxn=j1;
    //if(maxn<j2)maxn=j2;
}

猜你喜欢

转载自blog.csdn.net/weixin_44769957/article/details/108904463
今日推荐