题目正文
试写一个算法,识别字符序列是否为形如‘子序列1&子序列2’模式的字符序列,其中子序列2是子序列1的逆序列,0<子序列字符串长度<1000,且都为小写字母。输出YES或者NO。
输入
一行字符序列
输出
YES或NO
样例
hello&ollhe
NO
代码(示例):
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main()
{
char str[4005];
while(scanf("%s",str)!=EOF)
{
int len=strlen(str);
int sum=0;
bool flag=true;
for(int i=0;i<len;i++)
{
if(str[i]=='&')
sum++;
else if(str[i]>='a' && str[i]<='z')
flag=true;
else
{
flag=false;
break;
}
}
if(len%2==0 || sum!=1 || str[len/2]!='&')
flag=false;
for(int i=0;i<len/2;i++)
{
if(str[i]!=str[len-i-1])
{
flag=false;
break;
}
}
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
总结
这道题是我交的最多的一次,我的错误是没有分清大小写,一直出错,导致我交了二十多遍。一定要认真审题。