Yandex.Algorithm Open 2011: Qualification 1-A
题目
https://codeforces.com/contest/81/problem/A
问题重述
两个连在一起的才能删除。如abba先删除bb,删除后变成了aa,再删除相连的aa,字符串变空。
思路
栈。每个字母与栈顶的元素比较:
- 相同的话删栈顶
- 不同的话进栈
最后翻转下字符串
代码
//原来是开心消消乐
#include <iostream>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
const int N = 26;
int a[N];
string s;
//栈 每加一个和栈顶比较下 相同就删除栈顶 不同加进来
int main()
{
cin >> s;
stack<char>st;
st.push('#');
for(char c : s)
{
if(c == st.top())
{
st.pop();
}
else
st.push(c);
}
string ans1, ans2;
while(st.size() > 1)
{
ans1 += st.top();
st.pop();
}
for(int i = ans1.size() - 1; i >= 0; -- i) ans2 += ans1[i];
cout << ans2;
return 0;
}

浙公网安备 33010602011771号