尋找回文

Posted on Thu, Nov 11, 2021 題解 進階程設課程
#include <bits/stdc++.h>

using namespace std;

is_palindrome(string s,int st,int ed){
    int state=1;
    for(int i=0;i<(ed-st+1)/2;i++){
        //cout<<s[st+i]<<" vs "<<s[ed-i]<<endl;
        if(s[st+i]!=s[ed-i]){
            state=0;
            break;
        }
    }
    return state;
}

int main()
{
    string s;
    int maxn=-10e9,st,ed;
    cin>>s;
    //cout<<is_palindrome(s,0,1);
    for(int i=0;i<s.size()-1;i++){
        for(int j=i+1;j<s.size();j++){
            //cout<<i<<" "<<j<<" "<<is_palindrome(s,i,j)<<endl;
            if(is_palindrome(s,i,j)){
                if(j-i>maxn){
                    st=i;
                    ed=j;
                    maxn=j-i;
                    //cout<<st<<" "<<ed<<endl;
                }
            }
        }
    }
    for(int i=st;i<ed+1;i++){
        cout<<s[i];
    }

    return 0;
}