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,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。