题目:
给你一个字串
你可以消除中间的ab得到x分
或是消除中间的ba得到y分
问你最多能得几分
思路:
题目的重点就是
像是aba
如果x>y就要选择ab的组合 得到x分
然后消除ab
不然就是ba
所以需要对两种情况做stack
然后要stack两次
写成函式之后比较简洁了
```cpp
class Solution {
public:
string test(string s, char l, char r)
{
int len = s.size();
vector<char> res;
for(int i = 0 ; i < len ; i ++)
{
res.push_back(s[i]);
while(res.size()>1 && res[res.size()-2] == l && res[res.size()-1] ==
r)
{
res.pop_back();
res.pop_back();
}
}
string res2(res.begin(),res.end());
return res2;
}
int maximumGain(string s, int x, int y)
{
int res = 0;
if(x > y)
{
string ab = test(s,'a','b');
res += (s.size()-ab.size())/2 * x;
string ba = test(ab,'b','a');
res += (ab.size()-ba.size())/2 * y;
}
else
{
string ba = test(s,'b','a');
res += (s.size()-ba.size())/2 * y;
string ab = test(ba,'a','b');
res += (ba.size()-ab.size())/2 * x;
}
return res;
}
};
```