A31088. 回文拼接
填空题
中等
知识点
题目描述
回文拼接
题目描述
一个字符串是回文串,当且仅当该字符串从前往后读和从后往前读是一样的,例如,aabaa和ccddcc都是回文串,但abcd不是。
小杨有n个仅包含小写字母的字符串,他想请你编写程序判断每个字符串是否由两个长度至少为2的回文串前后拼接而成。
输入格式
第一行包含一个正整数n,代表字符串数量。
之后n行每行一个仅包含小写字母的字符串。
输出格式
对于每个字符串输出一行,如果该字符串由两个长度至少为2的回文串前后拼接而成则输出 Yes,否则输出 No。
样例1
输入
4
abcd
aabbb
aaac
abcdd
输出
No
Yes
No
No
对于第1,3,4字符串,都不是由两个长度至少为2的回文串前后拼接而成。
第2个字符串由回文串 和 前后拼接而成,并且两个回文串长度都至少为2。
对于全部数据,保证有1≤n<10,并且每个字符串的长度不超过100。
参考答案
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,k;
cin>>n;
for(int i=1; i<=n; i++) {
string s;
cin>>s;
int m = s.length();
int fl = 0;
for(int j=2; j<=m-2; j++) {
string s1=s.substr(0,j);
string s2=s.substr(j,m-j+1);
string t1="",t2="";
for(int k=(int)s1.size()-1; k>=0; k--)t1+=s1[k];
for(int k=(int)s2.size()-1; k>=0; k--)t2+=s2[k];
if(t1==s1&&t2==s2) {
fl=1;
break;
}
}
if(fl)cout<<"Yes\n";
else cout<<"No\n";
}
}
上一题
下一题