括号匹配,按照运算规则计算,不会,,,看了discussion还是不太会诺。。。
vector没有初始化的话会出很多错误!!!
Approach1:
class Solution {
public:
int scoreOfParentheses(string S) {
vector<int> res( 30 , 0 );
int l = S.length();
int j = 0;
for( int i = 0 ; i < l ; i ++ ){
if( S[ i ] == '(')res[ ++ j ] = 0 ;
else{
res[ j - 1 ] += max( 2 * res[ j ] , 1 );
j -- ;
}
}
return res[ 0 ];
}
};
Approach2:
class Solution {
public:
int scoreOfParentheses(string S) {
int l = S.length();
int res = 0;
int layers = 0;
for( int i = 0 ; i < l ; i ++ ){
if( S[ i ] == '(')
layers ++;
else
layers --;
if( S[ i ] == '(' && S[ i + 1 ] == ')')
res += 1 << ( layers - 1 );
}
return res;
}
};