解题思路:
这一题一定认真要看清楚题目,我不认真看题就被坑惨了。
(题目:试写一个算法,识别字符序列是否为形如‘子序列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语言代码)浏览:945 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:946 |
三角形 (C++代码)记忆化搜索浏览:1234 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:591 |
【绝对值排序】 (C语言代码)浏览:825 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:547 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:609 |
剪刀石头布 (C++代码)浏览:1713 |
淘淘的名单 (C语言代码)浏览:1229 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:544 |