链接:
题目:
代码1:
#include <iostream>
#include <iterator>
#include<string>
#include<stack>
using namespace std;
int main() {
string s;
stack<char> st;
stack<char> ret;
cin >> s;
for( auto ch : s )
{
if(!st.empty() && ch == st.top()) st.pop();
else st.push(ch);
}
int size = st.size();
if( size == 0)
{
cout << 0 << endl;
}
else
{
for(int i = 0; i < size; i++)
{
ret.push(st.top());
st.pop();
}
for(int i = 0; i<= ret.size(); i++)
{
cout << ret.top();
ret.pop();
}
}
return 0;
}
代码2:
#include <iostream>
#include <iterator>
#include<string>
#include<stack>
using namespace std;
int main() {
string s;
string st;
cin >> s;
for(auto a : s)
{
if(!st.empty() && a == st.back()) st.pop_back();
else st.push_back(a);
}
if(st.size() == 0) cout << 0;
else cout << st;
}
思路:
括号匹配。
栈的特点让去数据的时候是逆向的,用string可以简化代码