试写一个算法,识别字符序列是否为形如‘子序列1&子序列2’模式的字符序列,其中子序列2是子序列1的逆序列,0<子序列字符串长度<1000,且都为小写字母。输出YES或者NO。
一行字符序列
YES或NO
hello&ollhe
NO
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- int find(char*);
- int main(){
- char s[2500];
- while(gets(s)!=NULL){
- int pos=find(s);
- if(pos==0||pos!=(strlen(s)-1-pos)){//注意判断条件 第一个字符为&或者&前后字符不等或者前后不全为小写字母输出为NO
- printf("NO\n");
- continue;
- }
- int flag=1;
- for(int i=0,j=strlen(s)-1;i<pos;i++,j--){
- if(s[i]==s[j]&&s[i]>='a'&&s[i]<='z'&&s[j]>='a'&&s[j]<='z');
- else{
- printf("NO\n");
- flag=0;
- break;
- }
- }
- if(flag)
- printf("YES\n");
- }
- }
- int find(char* p){
- for(int i=0;i<strlen(p);i++)
- if(p[i]=='&')
- return i;
- }