问题描述:
思路:用vector存储数据,一个l用来存放小写的部分的下标,一个u来存放大写的部分的下标,删的时候删除下标即可,然后按照顺序输出即可
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
int t;
int main()
{
cin >> t;
while (t--)
{
string s;
cin >> s;
vector<int>u, l;//u代表大写,l代表小写
for (int i = 0; i < s.size(); i++)
{
if (s[i] == 'b')
{
if (!l.empty())l.pop_back();//遇到小b,删除小写的最后一个
}
else if (s[i] == 'B')
{
if (!u.empty())u.pop_back();//遇到大B,删除大写的最后一个
}
else if (s[i] >= 'a')
{
l.push_back(i);//放入小写的部分的下标
}
else//放入大写的部分的下标
{
u.push_back(i);
}
}
for (int x : u)l.push_back(x);//遍历一遍大写的下标
sort(l.begin(), l.end());//排序
for (int x : l)putchar(s[x]);//按照顺序输出
cout << endl;//换行
}
return 0;
}