测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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"; } }
上一题 下一题