利用輔助棧,先初始化輔助棧,將輸出序列壓入棧中,輸入序列依次入棧,如果入棧的頂部元素和出棧一致,則入棧和出棧都彈出元素。
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;
}