[GESP2409三级] 回文拼接

字符串操作

#include <bits/stdc++.h>
using namespace std;
int main()
{
 int n;
 cin>>n;
 string a[100];
 int flag[100]={};
 for(int i=0;i<n;i++)
 {
  cin>>a[i];
  for(int j=2;j<a[i].size()-1;j++)
  {
   	string b=a[i].substr(0,j);
   	string b1=b;
   	string v=a[i].substr(j,a[i].size()-j);
   	string v1=v;
   	reverse(b.begin(),b.end());
   	reverse(v.begin(),v.end());
   	//cout<<b1<<" "<<v1<<endl;
   	if(b==b1&&v==v1)
   	{
   	flag[i]=1;	
   	break;
	}
  }	
 }
 for(int i=0;i<n;i++)
 {
 	if(flag[i]==1)
 	{
 	 cout<<"Yes"<<endl;	
	 }
	 else
	 {
	 	cout<<"No"<<endl;
	 }
 }
}
#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    while(n--){
        string s;
        cin>>s;
        bool f=false;
        for(int i=2;i<s.size()-1;i++){
            string a1,b1,a2,b2;
            for(int j=0;j<i;j++) a1+=s[j];
            for(int j=i;j<s.size();j++) b1+=s[j];
            for(int j=i-1;j>=0;j--) a2+=s[j];
            for(int j=s.size()-1;j>=i;j--) b2+=s[j];
            if(b1==b2&&a1==a2){
                f=true;
                break;
            }
        }
        if(f) cout<<"Yes\n";
        else cout<<"No\n";
    }
    return 0;
}