[GESP202409 三级] 回文拼接

GESP编程共123题,本题是整站第1431题,已经有人完成了本题,加油!

题目描述

一个字符串是回文串,当且仅当该字符串从前往后读和从后往前读是一样的,例如,aabaa 和 ccddcc 都是回文串,但 abcd 不是。

小杨有 n 个仅包含小写字母的字符串,他想请你编写程序判断每个字符串是否由两个长度至少为 2 的回文串前后拼接而成。

输入格式

第一行包含一个正整数 n,代表字符串数量。
接下来 n 行,每行一个仅包含小写字母的字符串。

输出格式

对于每个字符串输出一行,如果该字符串由两个长度至少为 2 的回文串前后拼接而成则输出 Yes,否则输出 No。

输入输出样例

输入 #1

4
abcd
aabbb
aaac
abcdd

输出 #1

No
Yes
No
No

说明/提示

样例 1 解释

对于第 1,3,4 个字符串,都不是由两个长度至少为 2 的回文串前后拼接而成。 第 2 个字符串由回文串 aa 和 bbb 前后拼接而成,并且两个回文串长度都至少为 2。

数据规模与约定

对全部的测试数据,保证 1≤n≤10,且每个字符串的长度均不超过 100。

别灰心,再试一次!

真题解析

【题目解析】

首先需要清楚回文格式这样一个小概念,题面描述要求是整个字符串是否为连个回文格式的子串拼接而成的,所以可以使用循环从中间切开,分成前后很多组尝试,检测前后两个字串是否都是回文格式,题目是多组输入数据,所以循环n次,每次一个输入是,对应一个输出(Yes/No)。由于题目要求长度至少为2,所以对于每个string s,测量长度后从2开始循环到m-2位置,这样变量j刚好用于strsub函数中的位置和长度,求得两个字串s1和s2后使用两个关于k的循环分别反向拼接形成两个反向的串t1和t2,如果t1==s1 && t2==s2证明前后两个字符串都是回文格式的,标记fl = 1,根据fl的状态分支判断,输出答案即可。

【参考程序】

本站题目仅供学习,GESP版权归CCF所有,如有侵权请联系删除。站长陈老师QQ及微信:208234。