解题思路:
栈的简单应用,模拟元素的入栈出栈顺序。将栈顶元素和s2数组进行比较,若相同则将栈顶元素弹出,不同则继续将其他元素入栈,若s2的元素序列都判断完毕则输出Yes,反之输出No。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s1[10005];
char s2[10005];
int n;
int k=1;
while (~scanf("%d%s%s",&n,s1,s2))
{
string st[10005];
int l2=strlen(s2);
int len=0;
int l=0;
stack <char> a;
for (int i=0;i<strlen(s1);i++){
a.push(s1[i]);
st[l++]="in";
while ((!a.empty()) && s2[len]!='\0'&&a.top()==s2[len]){
len++;
a.pop();
st[l++]="out";
}
}
printf("Case #%d: ",k++);
if (len>=l2){
printf("Yes.\n");
for (int i=0;i<l;i++) cout<<st[i]<<endl;
}
else printf("No.\n");
}
}