实现函数bool isPushPop(char *s1, char *s2):
输入两个字符串,判断一个字符串中的字符是否是另一个字符串中的字符入栈、出栈的结果(假设字符串不重复)。比如
isPushPop("ABCDEF", "DCFEBA")返回true;
isPushPop("ABCDEF", "AFCDBE")返回flase。
这个题目最直接的解法就是建立一个辅助栈,逐一分析s2中的各个字符串,如果不在栈中就将s1中的字符push入栈,相同则出栈。
注意判断出错的条件,当s1所有的字符都入栈还是无法找到可以出栈的字符时,就应该返回false了。
代码如下:
#define MAXLEN 100
int isPushPop(char *s1, char *s2){
assert(s1 != NULL && s2 != NULL);
char s[MAXLEN];
int len1 = strlen(s1);
int len2 = strlen(s2);
int top1=0, top2=0, top=0;
while(top1 < len1){
s[top++] = s1[top1++];
while(s2[top2] == s[top-1]){
top--;
top2++;
}
}
if(top != 0)return 0;
else return 1;
}