字串應用: 最少的操作讓字串平衡 Min Deletions Make String Balanced_LC #1653

閱讀時間約 3 分鐘

題目敘述 Minimum Deletions to Make String Balanced

給定一個只會有包含'a'或'b'的輸入字串s。

每次操作可以任選一個字元刪除。
請問最少需要多少次操作,才會使得所有的'b'都在'a'後面?


測試範例

Example 1:

Input: s = "aababbab"
Output: 2
Explanation: You can either:
Delete the characters at 0-indexed positions 2 and 6 ("aababbab" -> "aaabbb"), or
Delete the characters at 0-indexed positions 3 and 6 ("aababbab" -> "aabbbb").

Example 2:

Input: s = "bbaaaaabb"
Output: 2
Explanation: The only solution is to delete the first two characters.
刪除前面兩個b,變成"aaaaabb"
使得所有的'b'都在'a'後面​

演算法 用stack刪除所有非法pair 'ba'

題目要求所有的b都在a的後面

也就是說,字串s中不允許出現'ba'這種非法pattern。

我們可以由左到右掃描每個字元,搭配stack去統計非法pair 'ba'的出現次數。

每一個非法pair 'ba'都需要一次刪除操作。

因此可以推導出一個結論: 最小的刪除操作 等於 非法pair 'ba'的數量


程式碼 用stack刪除所有非法pair 'ba'

class Solution:
def minimumDeletions(self, s: str) -> int:

cnt, stack = 0, []

for char in s:
if char == "a" and stack and stack[-1] == "b":
# Delete a or b to remove a bad pair
stack.pop()
cnt += 1
else:
stack.append(char)

return cnt

複雜度分析

時間複查度: O(n)

從左到右掃描每個字元,所需時間為O(n)


空間複查度: O(n)

建立一個stack,最多所需空間為O(n)


關鍵知識點

這邊用到的技巧類似於用stack去找出合法的()括號配對,強烈讀者一起複習這題高度關聯的類似題


Stack堆疊應用題 合法括號配對字串 Leetcode #20_Valid Parentheses


Reference

[1] Minimum Deletions to Make String Balanced - LeetCode

80會員
417內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目敘述: Reverse Bits 給定一個32bit的整數,請逆序翻轉其二進位表達式,輸出翻轉過後的數字。 例如輸入是二進位1010111 逆序翻轉後是 1110101,對應的十進位數值是117 測試範例 Example 1: Input: n = 00000010100101000
題目敘述 Count Number of Teams 給定一個輸入陣列rating,裡面代表每位成員的評分 挑選三位成員,對應到三個index i, j, k 且 i < j < k 如果rating[i] < rating[j] < rating[k] ,則此三人可以組成一隊。 或者ra
題目敘述: Minimum Cost to Convert String I 給定字元轉換映射表original, changes和對硬的成本陣列cost。 請問字串source轉換到字串destination的最小成本是多少? 如果無解,請返回-1 如果有解,請返回整體的轉換最小成本。
題目敘述 Sort the Jumbled Numbers 給定兩個輸入陣列 第一個是映射表,提供0~9 mapping到新數字的映射關係。 第二個陣列是原始數值。 請重新排序原始數值,排序依據是根據映射表對應之後的新數值的大小決定。 如果對應之後的新數值大小相同,則由原本的前後相對順序決定。
題目敘述 Sort Array by Increasing Frequency Leetcode #1636 給定一個輸入陣列,請依照出現頻率的多寡從低頻到高頻排列陣列元素。 如果有兩個元素的出現頻率相同,依照元素大小從大到小排列。 測試範例 Example 1: Input: nums
給定兩個輸入陣列,第一個陣列代表每個人的姓名,第二個陣列代表每個人的身高。依照身高從高到矮進行排列,輸出每個人的名字。本文介紹了一個根據身高排列人名的算法,並提供了相關的程式碼和時間複雜度分析。
題目敘述: Reverse Bits 給定一個32bit的整數,請逆序翻轉其二進位表達式,輸出翻轉過後的數字。 例如輸入是二進位1010111 逆序翻轉後是 1110101,對應的十進位數值是117 測試範例 Example 1: Input: n = 00000010100101000
題目敘述 Count Number of Teams 給定一個輸入陣列rating,裡面代表每位成員的評分 挑選三位成員,對應到三個index i, j, k 且 i < j < k 如果rating[i] < rating[j] < rating[k] ,則此三人可以組成一隊。 或者ra
題目敘述: Minimum Cost to Convert String I 給定字元轉換映射表original, changes和對硬的成本陣列cost。 請問字串source轉換到字串destination的最小成本是多少? 如果無解,請返回-1 如果有解,請返回整體的轉換最小成本。
題目敘述 Sort the Jumbled Numbers 給定兩個輸入陣列 第一個是映射表,提供0~9 mapping到新數字的映射關係。 第二個陣列是原始數值。 請重新排序原始數值,排序依據是根據映射表對應之後的新數值的大小決定。 如果對應之後的新數值大小相同,則由原本的前後相對順序決定。
題目敘述 Sort Array by Increasing Frequency Leetcode #1636 給定一個輸入陣列,請依照出現頻率的多寡從低頻到高頻排列陣列元素。 如果有兩個元素的出現頻率相同,依照元素大小從大到小排列。 測試範例 Example 1: Input: nums
給定兩個輸入陣列,第一個陣列代表每個人的姓名,第二個陣列代表每個人的身高。依照身高從高到矮進行排列,輸出每個人的名字。本文介紹了一個根據身高排列人名的算法,並提供了相關的程式碼和時間複雜度分析。
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
「一周賺多少才夠?」 「錢沒有在嫌多的,當然是越多越好!能周周破千是最好啦!」 如果賺不到那麼多錢,那一周「至少」要賺多少才夠? 最起碼,也要夠基本的生活開銷吧? 隨著紐西蘭2024年最低薪資的消息公布,準備於今年出發的背包客,在法律的底線下,「合理」期望的「最低」薪資該有多少?隨著本篇繼續看下去。
Thumbnail
隨著各國重新開放國門,打工度假也重新回到許多年輕人的選項中,位於南半球的紐西蘭,在這一波出國熱潮中,也是許多人考慮的選項之一。 如果賺不到那麼多,一周「至少」要賺多少才夠?在紐西蘭法定最低薪資的底線下,「合理」期望的「最低」薪資該有多少?就跟著本篇繼續看下去。
Thumbnail
「一周賺多少才夠?」這是我來澳洲後,最常被問到的一個問題。每當有人問我類似開頭那樣的問題,個人認為這只是個假議題。 畢竟,能發大財誰不要?但如果不能發大財的話,「最起碼要賺多少」卻是很少人有的概念。因此本篇文章來分享一下,根據澳洲2023年最新發布的基本薪資,背包客合理期望的「最低」薪資該有多少。
Thumbnail
如何將對稱密鑰轉換成字串,以及如何從字串反向生成原有的對稱密鑰
Thumbnail
「一周賺多少才夠?」這是我來澳洲後,最常被問到的一個問題。每當有人問我類似開頭那樣的問題,個人認為這只是個假議題。 畢竟,能發大財誰不要?但如果不能發大財的話,「最起碼要賺多少」卻是很少人有的概念。因此本篇文章來分享一下,根據澳洲2022年最新發布的基本薪資,背包客合理期望的「最低」薪資該有多少。
Thumbnail
電商百問第33集,告訴你一套完善的POS系統如何能幫零售業者賺錢,讓你日進斗金、賺錢如有神助。許多傳統實體商家因為過往的成功經驗,並未思考在面對網路時代或疫情衝擊時要如何提前準備或是應對,最後的下場往往都是黯然關店。 零售店面不可取代,網路也是助力 在電商打滾多年的馬雲曾說過:「實體不能死,虛實整
Thumbnail
電商百問第16集,教你如何打造電商賺錢體質跟做好開局的完美布局?一次解答,讓你日進斗金、賺錢如有神助。談到創業、做生意,電商幾乎是絕大多數人第一個想到的選擇,投身電商經營也可說是時代演進下必然的趨勢。因為進場的門檻低,不需要太龐大的投資金額,金流、物流也不像過去傳統做生意時那樣難解決,對新手來說,
Thumbnail
「一周賺多少才夠?」這是我來澳洲後,最常被問到的一個問題。每當有人問我類似開頭那樣的問題,個人認為這只是個假議題。 畢竟,能發大財誰不要?但如果不能發大財的話,「最起碼要賺多少」卻是很少人有的概念。因此本篇文章來分享一下,根據澳洲2021年最新發布的基本薪資,背包客合理期望的「最低」薪資該有多少。
Thumbnail
本篇文章主要聚焦在 如何以寫文章增加粉絲與影響力並打造個人品牌 以及各"免費"平台特色分析 俗話說 : 工欲善其事必先利其器 林肯總統說 :如果我只有一個小時砍倒一棵樹,我會花45分鐘磨利我的斧頭。
Thumbnail
「一周賺多少才夠?」這是我來澳洲後,最常被問到的一個問題。那如果賺不到那麼多錢,那一周「至少」要賺多少才夠?如果是以賺錢為目的,讓我用澳洲2020年的法定基本薪資告訴你,在台灣如果可以賺到、甚至是超過這個區間的薪資水準,就不要考慮來澳洲了。
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
「一周賺多少才夠?」 「錢沒有在嫌多的,當然是越多越好!能周周破千是最好啦!」 如果賺不到那麼多錢,那一周「至少」要賺多少才夠? 最起碼,也要夠基本的生活開銷吧? 隨著紐西蘭2024年最低薪資的消息公布,準備於今年出發的背包客,在法律的底線下,「合理」期望的「最低」薪資該有多少?隨著本篇繼續看下去。
Thumbnail
隨著各國重新開放國門,打工度假也重新回到許多年輕人的選項中,位於南半球的紐西蘭,在這一波出國熱潮中,也是許多人考慮的選項之一。 如果賺不到那麼多,一周「至少」要賺多少才夠?在紐西蘭法定最低薪資的底線下,「合理」期望的「最低」薪資該有多少?就跟著本篇繼續看下去。
Thumbnail
「一周賺多少才夠?」這是我來澳洲後,最常被問到的一個問題。每當有人問我類似開頭那樣的問題,個人認為這只是個假議題。 畢竟,能發大財誰不要?但如果不能發大財的話,「最起碼要賺多少」卻是很少人有的概念。因此本篇文章來分享一下,根據澳洲2023年最新發布的基本薪資,背包客合理期望的「最低」薪資該有多少。
Thumbnail
如何將對稱密鑰轉換成字串,以及如何從字串反向生成原有的對稱密鑰
Thumbnail
「一周賺多少才夠?」這是我來澳洲後,最常被問到的一個問題。每當有人問我類似開頭那樣的問題,個人認為這只是個假議題。 畢竟,能發大財誰不要?但如果不能發大財的話,「最起碼要賺多少」卻是很少人有的概念。因此本篇文章來分享一下,根據澳洲2022年最新發布的基本薪資,背包客合理期望的「最低」薪資該有多少。
Thumbnail
電商百問第33集,告訴你一套完善的POS系統如何能幫零售業者賺錢,讓你日進斗金、賺錢如有神助。許多傳統實體商家因為過往的成功經驗,並未思考在面對網路時代或疫情衝擊時要如何提前準備或是應對,最後的下場往往都是黯然關店。 零售店面不可取代,網路也是助力 在電商打滾多年的馬雲曾說過:「實體不能死,虛實整
Thumbnail
電商百問第16集,教你如何打造電商賺錢體質跟做好開局的完美布局?一次解答,讓你日進斗金、賺錢如有神助。談到創業、做生意,電商幾乎是絕大多數人第一個想到的選擇,投身電商經營也可說是時代演進下必然的趨勢。因為進場的門檻低,不需要太龐大的投資金額,金流、物流也不像過去傳統做生意時那樣難解決,對新手來說,
Thumbnail
「一周賺多少才夠?」這是我來澳洲後,最常被問到的一個問題。每當有人問我類似開頭那樣的問題,個人認為這只是個假議題。 畢竟,能發大財誰不要?但如果不能發大財的話,「最起碼要賺多少」卻是很少人有的概念。因此本篇文章來分享一下,根據澳洲2021年最新發布的基本薪資,背包客合理期望的「最低」薪資該有多少。
Thumbnail
本篇文章主要聚焦在 如何以寫文章增加粉絲與影響力並打造個人品牌 以及各"免費"平台特色分析 俗話說 : 工欲善其事必先利其器 林肯總統說 :如果我只有一個小時砍倒一棵樹,我會花45分鐘磨利我的斧頭。
Thumbnail
「一周賺多少才夠?」這是我來澳洲後,最常被問到的一個問題。那如果賺不到那麼多錢,那一周「至少」要賺多少才夠?如果是以賺錢為目的,讓我用澳洲2020年的法定基本薪資告訴你,在台灣如果可以賺到、甚至是超過這個區間的薪資水準,就不要考慮來澳洲了。