描述
编写一程序,识别依次读入的一个以“#”为结束符的字符序列是否为形如“序列1@序列2”模式的字符序列。期中序列1和序列2中都不含字符“@”,且序列2是序列1的逆序列。例如“a+b@b+a”是满足条件的序列字符,而“1+3@3-1”则不是。
input
一个以“#”结束的字符序列。
output
是满足条件的字符序列输出“yes!”;否则输出“no!”。
样例输入
a+b@b+a#
样例输出
yes!
这道题没什么难度,具体代码如下
1 #include<iostream> 2 #include<string.h> 3 using namespace std; 4 5 int main(){ 6 char *p=new char[100]; 7 cin>>p; 8 int len=strlen(p); 9 int num1=0,num2=0,pos=0; 10 for(int i=0;i<len;i++){ 11 if(p[i]=='@'){ 12 num1++; 13 pos=i; 14 } 15 if(p[i]=='#'){ 16 num2++; 17 } 18 } 19 if(p[len-1]!='#'||p[len-2]=='@'||num1!=1||num2!=1){ 20 cout<<"no!"; 21 return 0; 22 } 23 for(int i=pos-1,j=pos+1;i>=0&&j<=len-1;i--,j++){ 24 if(p[i]!=p[j]){ 25 cout<<"no!"; 26 return 0; 27 } 28 } 29 cout<<"yes!"; 30 delete[]p; 31 32 return 0; 33 }