Problem Statement
东东有一个字符串X,该串包含偶数个字符,一半是 S 字符,一半是 T 字符
东东可以对该字符串执行 1010000 次操作:如果存在 ST 是该串的子串,则删除掉最左边的 ST。
即 TSTTSS⇒TTSS、SSSTTT⇒SSTT⇒ST⇒空
Input
(2 ≦ |X| ≦ 200,000)
Output
输出最终串的长度
Sample Input 1
TSTTSS
Sample Output 1
4
解题思路:
遍历字符串,如果遇到字符S,snum++。如果遇到字符T,如果此时snum大于0,说明此时前面还有字符S。snum–,字符串长度减2.
#include <iostream>
using namespace std;
int main()
{
string s;
cin >> s;
int tsize = s.size();
int snum = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] == 'S') {
snum++;
}
if (s[i] == 'T') {
if (snum > 0) {
snum--;
tsize -= 2;
}
}
}
cout << tsize << endl;
}