特定字符序列的判断(1028)

描述

编写一程序,识别依次读入的一个以“#”为结束符的字符序列是否为形如“序列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 } 
原文地址:https://www.cnblogs.com/swust-wangyf/p/6726006.html