leetcode題 856 括號的分數(中等)

2021-09-26 12:26:59 字數 1072 閱讀 1403

一、題目描述: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,遇到左括號就直接算...