leetcode每日刷題

2021-10-07 14:47:52 字數 914 閱讀 5481

題目描述:有效括號字串為空 ("")、"(" + a + 「)」 或 a + b,其中 a 和 b 都是有效的括號字串,+ 代表字串的連線。例如,"","()","(())()" 和 「(()(()))」 都是有效的括號字串。

如果有效字串 s 非空,且不存在將其拆分為 s = a+b 的方法,我們稱其為原語(primitive),其中 a 和 b 都是非空有效括號字串。

給出乙個非空有效字串 s,考慮將其進行原語化分解,使得:s = p_1 + p_2 + … + p_k,其中 p_i 是有效括號字串原語。

對 s 進行原語化分解,刪除分解中每個原語字串的最外層括號,返回 s 。

示例1:輸入:"(()())(())"

輸出:"()()()"

解釋:輸入字串為 「(()())(())」,原語化分解得到 「(()())」 + 「(())」,

刪除每個部分中的最外層括號後得到 「()()」 + 「()」 = 「()()()」。

示例2:輸入:"()()"

輸出:""

解釋:輸入字串為 「()()」,原語化分解得到 「()」 + 「()」,

刪除每個部分中的最外層括號後得到 「」 + 「」 = 「」。

這道題的思路是:找到包裹在外層括號,不用考慮裡面包裹了多少對的括號,因為裡面被包裹的括號是成對存在的有效括號,所以左括號「(」和右括號「)」是相等的(即外層的括號加上被包裹的括號對)所以設定乙個變數cnt,當迴圈找到的是「(」cnt++;反則是–cnt,當cnt 的值為零時就找到了一對外括號,start變數用來記錄外括號的外接以及是記錄下乙個外括號的開始

var

removeouterparentheses

=function(s

)else}}

return res

};

每日程式設計(五) leetcode刷題

題目 最後乙個單詞的長度 描述 給定乙個僅包含大小寫字母和空格 的字串,返回其最後乙個單詞的長度。如果不存在最後乙個單詞,請返回 0 說明 乙個單詞是指由字母組成,但不包含任何空格的字串。示例 輸入 hello world 輸出 5分析 比較簡單了,很明顯字串的分割,去最後乙個字串,計算長度即可,但...

每日程式設計(十) leetcode刷題

題目 將有序陣列轉換為二叉搜尋樹 題目描述 將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示...

每日程式設計(十一) leetcode刷題

題目 平衡二叉樹 題目描述 給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。分析 沒什麼可說的,雙遞迴,先...