原题链接:字符序列模式识别
解题思路:
这一题一定认真要看清楚题目,我不认真看题就被坑惨了。
(题目:试写一个算法,识别字符序列是否为形如‘子序列1&子序列2’模式的字符序列,其中子序列2是子序列1的逆序列,0<子序列字符串长度<1000,且都为小写字母。输出YES或者NO。)
(1)子序列长度>0,所以字符串不会出现等于&的情况,即字符串长度不会为1,若为1,则输出NO;
(2)字符串中间那个一定是&,所以如果字符串中间的不是&,则输出NO;
(3)字符串的长度一定是奇数,所以如果len%2==0,则输出NO;
先把这三种情况排除,然后再判断是否是回文,另外字符串中除了中间字符的为&,前后都必须是小写字母,否则不用再继续判断是否是回文。
参考代码:
#include <stdio.h> #include <string.h> int func(char *s) { int len,i,j; len=strlen(s); if(len%2==0 || s[len/2]!='&' || len==1) return 0; for(i=0,j=len-1;i<j;i++,j--) { if(!(s[i]>='a' && s[i]<='z')) return 0; if(s[i]!=s[j]) return 0; } return 1; } int main() { char s[2005]; gets(s); if(func(s)) printf("YES"); else printf("NO"); return 0; }
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复