給定乙個平衡括號字串 s,按下述規則計算該字串的分數:
() 得 1 分。
ab 得 a + b 分,其中 a 和 b 是平衡括號字串。
(a) 得 2 * a 分,其中 a 是平衡括號字串。
輸入: "(()(()))"
輸出: 6
s 是平衡括號字串,且只含有 ( 和 ) 。
2 <= s.length <= 50
思路
因為 s 是平衡的,所以如果乙個左括號緊挨著 x 個左括號,則左括號對分數的貢獻就是 2x2x
2x,於是我們用棧的大小來表示「未結算」的左括號的數量
如果乙個左括號緊挨著乙個右括號,開始結算,並彈出最接近的左括號
class
solution
}return c;}}
;
也可以直接用乙個整形遍歷 l
ll 記錄連續的左括號數,遇到右括號時,用 l-- 代替 st.pop();
複雜度分析
演算法 棧 LC20 有效的括號
給定乙個只包括 的字串 s 判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。示例 1 輸入 s 輸出 true示例 2 輸入 s 輸出 true示例 3 輸入 s 輸出 false示例 4 輸入 s 輸出 false示例 5 輸入 s 輸出 true ...
棧 B025 LC 漢諾塔問題(規律 模擬)
在經典漢諾塔問題中,有 3 根柱子及 n 個不同大小的穿孔圓盤,盤子可以滑入任意一根柱子。一開始,所有盤子自上而下按公升序依次套在第一根柱子上 即每乙個盤子只能放在更大的盤子上面 移動圓盤時受到以下限制 1 每次只能移動乙個盤子 2 盤子只能從柱子頂端滑出移到下一根柱子 3 盤子只能疊在比它大的盤子...
刪除最外層的括號(lc1021)2020 8 31
例如,和 都是有效的括號字串。如果有效字串 s 非空,且不存在將其拆分為 s a b 的方法,我們稱其為原語,其中 a 和 b 都是非空有效括號字串。給出乙個非空有效字串 s,考慮將其進行原語化分解,使得 s p 1 p 2 p k,其中 p i 是有效括號字串原語。對 s 進行原語化分解,刪除分解...