解题思路:
这一题一定认真要看清楚题目,我不认真看题就被坑惨了。
(题目:试写一个算法,识别字符序列是否为形如‘子序列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语言代码)浏览:640 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:840 |
printf基础练习2 (C语言代码)浏览:617 |
循环入门练习5 (C语言代码)浏览:830 |
Tom数 (C语言代码)浏览:552 |
Pascal三角 (C语言代码)浏览:643 |
输入输出格式练习 (C语言代码)浏览:845 |
整数平均值 (C语言代码)浏览:780 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:528 |
小O的乘积 (C++代码)浏览:749 |