题目链接
题意:
给你一个乱序括号序列,你可以将序列的每个字符移动到序列开头或末尾,求将序列变为匹配序列的最少移动总次数。
思路:
将括号序列放入栈中,pop掉可以匹配的,剩下的括号数除以二就是结果。
知识点:
栈(stack)的基础运用。
代码:
#include<bits/stdc++.h>
using namespace std
;
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int N
=2e5+5;
const int mod
=998244353;
const int inf
=0x7fffffff;
const double pi
=3.1415926535;
using namespace std
;
signed main()
{
IOS
;
int t
;
cin
>>t
;
while(t
--)
{
stack
<char>q
;
string s
;
int n
,sum1
=0,sum2
=0,ass
=0;
cin
>>n
;
cin
>>s
;
for(int i
=0;i
<n
;i
++)
{
if(q
.empty())
q
.push(s
[i
]);
else if(s
[i
]==')'&&q
.top()=='(')
{
q
.pop();
}
else
{
q
.push(s
[i
]);
}
}
cout
<<q
.size()/2<<endl
;
}
return 0;
}