解题思路:
这一题一定认真要看清楚题目,我不认真看题就被坑惨了。
(题目:试写一个算法,识别字符序列是否为形如‘子序列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语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:663 |
大神老白 (C语言代码)浏览:768 |
剔除相关数 (C语言代码)浏览:1058 |
三角形 (C语言代码)浏览:965 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:651 |
核桃的数量 (C语言代码)浏览:893 |
1051(奇了怪了)浏览:747 |
C二级辅导-等差数列 (C语言代码)浏览:891 |
敲七 (C++代码)浏览:1119 |
拆分位数 (C语言代码)浏览:558 |