点击消除
描述:
对一个字符串,每次“点击”,可以把字符串中相邻两个 相同字母消除。
例如,字符串"abbc"点击后可以生成"ac"。
但相同而不相邻、不相同的相邻字母都是不可以被消除的。
如果想把字符串变得尽可能短,当点击了足够多次之后,字符串的最终形态是什么?
输入描述:
一个字符串,仅由小写字母组成(字符串长度大于300000)
输出描述:
一个字符串,为”点击消除“后的最终形态。若最终为空串,则输出0.
解法:
括号匹配,栈
细节:用可变长的数组,来模拟栈结构
#include <iostream>
using namespace std;
int main()
{
string s,st;
cin >> s;
for(auto ch : s)
{
if(st.size() && st.back() == ch)
{
st.pop_back();
}
else
{
st += ch;
}
}
cout << (st.size() == 0 ? 0 : st) << endl;
return 0;
}
运行结果: