利用辅助栈,先初始化辅助栈,将输出序列压入栈中,输入序列依次入栈,如果入栈的顶部元素和出栈一致,则入栈和出栈都弹出元素。
bool isLegal(const string& str1, const string& str2) {
if (!str1.size() || !str2.size())
return false;
stack<char>in, out;
//初始化辅助栈 逆序压栈
for (int i = str2.size() - 1; i >= 0; i--)
out.push(str2[i]);
int i = 0;
while (i < str1.size()) {
in.push(str1[i++]);
//两栈顶部元素相等则一直出栈
while (in.size() && in.top() == out.top()) {
in.pop();
out.pop();
}
}
if (out.size())
return false;
return true;
}