一、題目描述:856. 括號的分數(中等)
給定乙個平衡括號字串 s,按下述規則計算該字串的分數:二、解題思路() 得 1 分。
ab 得 a + b 分,其中 a 和 b 是平衡括號字串。
(a) 得 2 * a 分,其中 a 是平衡括號字串。
示例 1:
輸入: "()"
輸出: 1
示例 2:
輸入: "(())"
輸出: 2
示例 3:
輸入: "()()"
輸出: 2
示例 4:
輸入: "(()(()))"
輸出: 6
s 是平衡括號字串,且只含有 ( 和 ) 。
2 <= s.length <= 50
方法一、最直觀的方法是使用棧,乙個棧stack存當前'('的括號,乙個棧score存當前括號'(『包含的子括號的分數,預設為0(沒有子括號)。score提前入棧乙個元素0作為初始值,也是儲存最終值。
1、遍歷字串,當遇到'('則入棧stack,score入棧0。
2、當遇到')'則,如果score的當前棧頂元素為0,則出棧0,stack出棧,前乙個元素score分數加1;如果棧頂元素不為0,則前乙個元素加上2*棧頂元素值,然後score出棧,stack出棧。這裡不用考慮score的前乙個元素下標未-1越界,因為一開始就入棧了乙個元素0.來儲存()前乙個元素的值。
方法二、使用遞迴
每次遇到子括號則遞迴計算字括號的分數
三、**
class solution
else if(s[i] == ')')
else}}
i++;
}return *score.begin();
}};
方法二**
nt strtop;
int scoreofparentheses(char * s)
int comp_sum(char *str) //計算子括號的值
LeetCode 括號的分數 856
給定乙個平衡括號字串s,按下述規則計算該字串的分數 示例 1 輸入 輸出 1 示例 2 輸入 輸出 2 示例 3 輸入 輸出 2 示例 4 輸入 輸出 6 s是平衡括號字串,且只含有 和 2 s.length 50 我們可以使用遞迴來解決這個問題。通過分析題目,我們發現有三種情況 比如 score ...
LeetCode 856 括號的分值
1 題目描述 給定乙個以括號組成的平衡字串表示式,基於如下規則計算括號表示式的分值。1 的分值為1 2 ab的分值為a b,其中a與b均是平衡字串 3 a 的分值為2 a,其中a是平衡字串。例子1 輸入 輸出 1 例子2 輸入 輸出 2 例子3 輸入 輸出 2 例子4 輸入 輸出 6 注 1 字串僅...
leetcode 856 括號的分數
給定乙個平衡括號字串s,按下述規則計算該字串的分數 示例 1 輸入 輸出 1示例 2 輸入 輸出 2示例 3 輸入 輸出 2示例 4 輸入 輸出 6 s是平衡括號字串,且只含有 和 2 s.length 50 很明顯,這一題可以用棧來解決。我們把單獨乙個左括號算作0分,遍歷字串s,遇到左括號就直接算...