Hzu挑战自我


私信TA

用户名:gxhzxyjsj

访问量:98753

签 名:

2024终究会过去,期待2025!

等  级
排  名 8
经  验 27847
参赛次数 67
文章发表 157
年  龄 0
在职情况 教师
学  校 贺州学院
专  业 软件工程

  自我简介:

弱鸡一个,继续努力!

解题思路:

这一题一定认真要看清楚题目,我不认真看题就被坑惨了。

(题目:试写一个算法,识别字符序列是否为形如‘子序列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 人评分

  评论区

  • «
  • »