解题思路:
这一题一定认真要看清楚题目,我不认真看题就被坑惨了。
(题目:试写一个算法,识别字符序列是否为形如‘子序列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语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:646 |
C二级辅导-同因查找 (C语言代码)浏览:581 |
C语言训练-排序问题<2> (C++代码)浏览:882 |
数列排序 (C语言代码)浏览:830 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:612 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:891 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:878 |
DNA (C语言描述,数据结构)浏览:852 |
剪刀石头布 (C语言代码)浏览:751 |
【蟠桃记】 (C语言代码)浏览:1024 |