我这里是学习别的博主用数学的方式来理解
首先 () = 1;(()) = 2 ;()()() = 3
一个复杂的(()((()))) 可以拆分成 (()) + (((())))
() = pow(2,0) (()) = pow(2,1)
以此类推
#include "bits/stdc++.h"
using namespace std;
string s;
int ss(string S){
int len = S.length();
int i = 0 , ans = 0,cnt = 0;
while (i < len)
{
while (i<len && s[i] == '('){
i++;
cnt++;
}
ans+= pow(2,cnt-1);
while (i<len && s[i] == ')'){
i++;
cnt--;
}
}
return ans;
}
int main()
{
while (cin >> s){
cout << ss(s) << endl;
}
return 0;
}