解题思路:
贪心。如果数字个数不够先补够数字,然后只需要进行交换操作,每个不能运算的星号都和最后一个数字交换。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <map>
#define LL long long
#define FOR(i,x,y) for(int i=x;i<=y;i++)
using namespace std;
string s;
int main()
{
int T;cin>>T;
while(T--)
{
cin>>s ; int len = s.length();int a = 0 , b = 0;
for(int i=0;i<len;i++) if(s[i] == '*') b++;else a++;
int c = (b - a + 1); if(c < 0) c = 0;int star = 0 , num = c , ans = c;
for(int i=0;i<len;i++)
{
if(s[i] == '*') star++;else num++;
if(star > num - 1) {star--;num++;ans++;}
}
cout<<ans<<endl;
}
return 0;
}