Description
试写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。输出YES或者NO。
Input
a+b&b+a
Output
YES
Sample Input
1+3&3-1
Sample Output
NO
代码如下:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
char s[101],t[101],k;
int i=0,len,mid,top;
while (cin>>k)
{
if (k=='@')
break;
s[i++]=k;
}
len=i;
mid=len/2;
if (s[mid]!='&')
cout<<"NO"<<endl;
else
{
top=0;
for (i=0; i<mid; i++)
{
t[top++]=s[i];
}
top--;
for (i=mid+1; i<len; i++)
{
if (s[i]!=t[top])
break;
top--;
}
if (top==-1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
运行结果:
学习心得:
链表没弄懂,不会写代码,所以还是用数组来写栈和队列的题。