js做演算法題-Score of Parentheses
字母移位
題目描述:
給定一個平衡的括號字串S
,根據以下規則計算字串的得分:
()
有1
分AB
有得分A + B
,其中A
和B
是平衡的括號字串。(A)
有得分2 * A
,其中A
是一個平衡的括號字串。
例1:
輸入:"()"
輸出:1
例2:
輸入:"(())"
輸出:2
例3:
輸入:"()()"
輸出:2
例4:
輸入:"(()(()))"
輸出:6
提示:
1. S
是一個平衡的括號字串,只包含(
和)
2. 2 <= S.length <= 50
思路分析:
根據題意,S字串只包含”(“和”)”,且”(“和”)”的數量相等
“()” = 1; “()()” = 1+1, “(())” = 2*1, 根據乘法分配律,有”(()(()))” = 2*(1 + 2*1) = 2*1 + 2*2*1 = (()) + ((()))。
因此,遍歷字串,找出包含”()”的個數與成熟,即可得出對應的分數值。
程式碼示例:
/**
* @param {string} S
* @return {number}
*/
var scoreOfParentheses = function(S) {
let [res,layers,len] = [0,0,S.length];
for (let i = 0; i < len; i++) {
S[i] == "(" ? layers++ : layers--;
if (S[i] == "(" && S[i+1] == ")") {
res += 1 << (layers - 1 )
}
}
return res;
};
相關推薦
js做演算法題-Score of Parentheses
字母移位 題目描述: 給定一個平衡的括號字串S,根據以下規則計算字串的得分: ()有1分 AB有得分A + B,其中A和B是平衡的括號字串。 (A)有得分2 * A,其中A是一個平衡的括號字串。 例1: 輸入:"()" 輸出:1 例2:
Leetcode 856. Score of Parentheses 括號得分(棧)
Leetcode 856. Score of Parentheses 括號得分(棧) 題目描述 字串S包含平衡的括號(即左右必定匹配),使用下面的規則計算得分 () 得1分 AB 得A+B的分,比如()()得2分 (A) 得2A分, 比如(()())得2(1+1)分 測試樣例 Ex
【演算法】LeetCode演算法題-Length Of Last Word
這是悅樂書的第155次更新,第157篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第14題(順位題號是58)。給定一個字串,包含戴爾字母、小寫字母和空格,返回最後一個單詞的長度,如果最後一個單詞不存在則返回0。另外,單詞不包含空格。例如:
856. Score of Parentheses(python+cpp)
題目: Given a balanced parentheses string S, compute the score of the string based on the following rule: () has score 1 AB has score A + B,
LeetCode演算法題-Intersection of Two Linked Lists(Java實現)
這是悅樂書的第178次更新,第180篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第37題(順位題號是160)。編寫程式以找到兩個單鏈表交叉的節點。例如: 以下兩個連結串列: A:  
演算法題013 -- [Valid Parentheses] by java
題目 判斷字串中的括號是否有效。要求括號成對出現,並且括號順序對應上。例如:[12(fgsf)4]-有效、{d[]df34}-有效、{f3[aer)}-無效、{3)32}-無效。 分析 依然考察的是程式碼能力,還有對棧的整體概念;有意思的是,這條題目的編碼,相對而言其實會比之
LeetCode演算法題-Number of 1 Bits(Java實現)
這是悅樂書的第186次更新,第188篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第45題(順位題號是191)。編寫一個帶無符號整數的函式,並返回它所具有的“1”位數。例如: 輸入:11 輸出:3 說明:整數11具有二進位制表示000000000000000000000
LeetCode演算法題-Power Of Two(Java實現)
這是悅樂書的第194次更新,第200篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第56題(順位題號是231)。給定一個整數,寫一個函式來確定它是否是2的冪。例如: 輸入:1 輸出:true 說明:2^0 = 1 輸入:16 輸出:true 說明:2^4 = 16
LeetCode演算法題-Power Of Three(Java實現-七種解法)
這是悅樂書的第204次更新,第215篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第71題(順位題號是326)。給定一個整數,寫一個函式來確定它是否為3的冪。例如: 輸入:27 輸出:true 輸入:0 輸出:false 輸入:9 輸出:true 輸入:45 輸出
LeetCode演算法題-Power of Four(Java實現-六種解法)
這是悅樂書的第205次更新,第216篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第72題(順位題號是342)。給定一個整數(帶符號的32位),寫一個函式來檢查它是否為4的冪。例如: 輸入:16 輸出:true 輸入:5 輸出:false 跟進:你可以在沒有迴圈/遞
LeetCode演算法題-Intersection of Two Arrays(Java實現-四種解法)
這是悅樂書的第207次更新,第219篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第75題(順位題號是349)。給定兩個陣列,編寫一個函式來計算它們的交集。例如: 輸入:nums1 = [1,2,2,1],nums2 = [2,2] 輸出:[2] 輸入:nums1 =
LeetCode演算法題-Intersection of Two Arrays II(Java實現)
這是悅樂書的第208次更新,第220篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第76題(順位題號是350)。給定兩個陣列,編寫一個函式來計算它們的交集。例如: 輸入:nums1 = [1,2,2,1],nums2 = [2,2] 輸出:[2,2] 輸入:nums1
LeetCode演算法題-Sum of Two Integers(Java實現)
這是悅樂書的第210次更新,第222篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第78題(順位題號是371)。計算兩個整數a和b的總和,但不允許使用運算子+和 - 。例如: 輸入:a = 1,b = 2 輸出:3 輸入:a = -2,b = 3 輸出:1 本次解題
Score of Parentheses(856)
856— Score of Parentheses Given a balanced parentheses string S, compute the score of the string based on the following rule: “()” has sco
LC 856. Score of Parentheses
Given a balanced parentheses string S, compute the score of the string based on the following rule: () has score 1 AB has score A
【LeetCode】856. Score of Parentheses 解題報告(Python & C++)
作者: 負雪明燭 id: fuxuemingzhu 個人部落格: http://fuxuemingzhu.cn/ 目錄 題目描述 題目大意 解題方法 棧 遞迴 計數 日期
LeetCode演算法題-Number of Segments in a String(Java實現)
這是悅樂書的第226次更新,第239篇原創 01 看題和準備 今天介紹的是LeetCode演算法題中Easy級別的第93題(順位題號是434)。計算字串中的段數,其中段定義為非空格字元的連續序列。請注意,該字串不包含任何不可列印的字元。例如: 輸入:“Hello, my name is John”
做演算法題的幾個思路
演算法題目往往比較複雜,要麼讓人感到無從下手,要麼很難給出一個最優解,但這恰恰是考驗一個程式設計師思維方式的有效手段。看到這類的難題不要慌,《演算法設計與分析基礎》一書比較全面地總結了做演算法題目的一些思路: (1)蠻力窮舉法,可以說可以解決所有的問題,不過對於組合數很大的
856. Score of Parentheses
1,題目要求 Given a balanced parentheses string S, compute the score of the string based on the following
Score of Parentheses 括號的分數
給定一個平衡括號字串 S,按下述規則計算該字串的分數: () 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括號字串。 (A) 得 2 * A 分,其中 A 是平衡括號字串。 示例 1: 輸入: "()" 輸出: 1 示例 2: 輸入: "((