题解:SP34117 JUSTAPAL - Just a Palindrome

· · 题解

先看代码吧。

#include<bits/stdc++.h>
using namespace std;

int IsH(string& s,int left,int right){
    int n=s.size();
    while(left>=0&&right<n&&s[left]==s[right]){
        left--;
        right++;
    }
    return right-left-1;
}


int solvo(string& s){
    int n=s.size();
    int maxLen=0;
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            string st=s;
            swap(st[i],st[j]);
            for(int k=0;k<2*n-1;k++){
                int left=k/2;
                int right=left+(k%2);
                int len=IsH(st, left, right);
                maxLen=max(maxLen, len);
            }
        }
    }
    return maxLen;
}

int T;
string s;

int main(){
    scanf("%d",&T);
    while(T--){
        cin>>s;
        cout<<solvo(s)<<endl;
    }
    return 0;
}

代码解释:

  1. IsH 函数:
  1. solvo 函数: