标签:
本题链接:点击打开链接
本题大意:
本题给出两个字符串,假设旁边有一空栈,两字符串以何种方式进栈可以清空两字符串数组,输出进出栈方式,若不能清空两字符数组,则输出No具体输出请参见题目。
解题思路:
就是模拟栈,使数组一中元素逐个进栈,然后看与数组二中开头元素是否相等,若相等则出栈,并清除数组二的开头元素。每次进栈出栈都可用另外一数组做相应标记,若最终数组二中所有元素均可清除,则表示可以完成,否则就无法完成。
参考代码:
#include<stdio.h> #include<string.h> char stack[220]; char str1[220],str2[220]; int result[220]; int main() { int n; while(scanf("%d",&n)!=EOF) { scanf("%s %s",str1,str2); int top=0,i=0,j=0,k=0; while(i<n) { stack[++top]=str1[i++]; result[k++]=1; while(top&&stack[top]==str2[j]) { top--;j++; result[k++]=0; } } if(j==n) { printf("Yes.\n"); for(int i=0;i<k;i++) { if(result[i]) printf("in\n"); else printf("out\n"); } } else printf("No.\n"); printf("FINISH\n"); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/lsgbb/article/details/47617741