1. 程式人生 > >js做演算法題-Score of Parentheses

js做演算法題-Score of Parentheses

字母移位

題目描述:

給定一個平衡的括號字串S,根據以下規則計算字串的得分:

  • ()1
  • AB有得分A + B,其中AB是平衡的括號字串。
  • (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: 輸入: "((