c_cpp 使表达式平衡所需的最小括号反转次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 使表达式平衡所需的最小括号反转次数相关的知识,希望对你有一定的参考价值。
/*
http://ideone.com/goOdhF
http://www.geeksforgeeks.org/minimum-number-of-bracket-reversals-needed-to-make-an-expression-balanced/
http://www.practice.geeksforgeeks.org/problem-page.php?pid=961
*/
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int countReversal(string str){
int len = str.size();
if(len%2)
return -1;
stack<char> s;
for(int i=0; i<len; i++){
if(str[i] == '}' && !s.empty()){
if(s.top() == '{')
s.pop();
else
s.push(str[i]);
}else
s.push(str[i]);
}
int count_left = s.size();
int n = 0;
while(!s.empty() && s.top() == '{'){
s.pop();
n++;
}
return (count_left/2 + n%2);
}
int main() {
int t;
cin >> t;
while(t--){
string str;
cin >> str;
cout << countReversal(str) << endl;
}
return 0;
}
以上是关于c_cpp 使表达式平衡所需的最小括号反转次数的主要内容,如果未能解决你的问题,请参考以下文章