付費限定

包含最多母音,長度為k的子字串_Leetcode #1456 精選75題

更新於 2024/03/07閱讀時間約 4 分鐘

題目敘述

題目會給定一個字串s,和指定長度k,問我們包含母音的子字串中,母音數量的最大值是多少?

題目的原文敘述


測試範例

Example 1:

Input: s = "abciiidef", k = 3
Output: 3
Explanation: The substring "iii" contains 3 vowel letters.

Example 2:

Input: s = "aeiou", k = 2
Output: 2
Explanation: Any substring of length 2 contains 2 vowels.

Example 3:

Input: s = "leetcode", k = 3
Output: 2
Explanation: "lee", "eet" and "ode" contain 2 vowels.

約束條件

  • 1 <= s.length <= 10^5

字串s的長度介於1~10^5之間。

  • s consists of lowercase English letters.

字串s只會包含小寫英文字母。

  • 1 <= k <= s.length

k值介於1~字串s的長度之間。


演算法

關鍵在於題目的要求是子字串,而不是子序列。

子字串一定要求必須連續。因此,最適合的演算法框架為滑動窗口sliding window

題目說字串s只會包含小寫英文字母,因此,先建立一個母音集合{a,e,i,o,u}

接著建立一個長度為k的滑動窗口,依序從左向右滑動,計算並且更新包含有最多母音數量的子字串


程式碼

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

vowels = { 'a', 'e', 'i', 'o', 'u' }

substring = s[:k]

vowel_count = sum( 1 for char in substring if char in vowels )

# record for max vowel count in substring
max_vowel_count = vowel_count


# sliding window of size k
for tail_index in range(k, len(s)):

head_index = tail_index - k
head_char, tail_char = s[head_index], s[tail_index]

if head_char in vowels:
vowel_count -= 1

if tail_char in vowels:
vowel_count += 1

max_vowel_count = max( max_vowel_count, vowel_count)


return max_vowel_count

以行動支持創作者!付費即可解鎖
本篇內容共 1822 字、1 則留言,僅發佈於Leetcode精選75題 解析+統整你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述 題目會給定一個有n個整數的陣列nums和指定的k值,問我們長度為k的子陣列的平均值的最大值是多少? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,12,-5,-6,50,3], k = 4 Output: 12.75000 Explanati
題目敘述 題目會給定我們一個整數陣列nums,我們每回合可以挑選總和為K的兩個數字,形成一個K-Sum pair。 請問我們最多可以製造幾個K-Sum pair? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4], k = 5 Output
題目敘述 題目會給定我們一個整數陣列nums,要求我們把裡面的0做元素交換,把0都搬到陣列的右邊。題目要求必須in-place在原本的陣列裡面做操作,不可以額外建立新的陣列。 題目的原文敘述 測試範例 Example 1: Input: nums = [0,1,0,3,12] Outpu
題目敘述 題目會給我們一個輸入陣列nums,要求我們判斷輸入陣列nums內部是否存在長度為三的遞增子序列? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4,5] Output: true Explanation: Any triplet wh
題目敘述 題目會給我們一個字串s作為輸入,要求我們以white space空白為切割符號,切割出每個單字,並且反轉其順序後,以字串形式最為最後的輸出。 題目的原文敘述 測試範例 Example 1: Input: s = "the sky is blue" Output: "blue i
題目敘述 題目會給定我們一格花盆陣列flowerbed,和欲種植的花朵數目n。 花盆陣列中,0代表空位,1代表已經有種好的花盆存在。 種花的要求是,不能有兩兩相鄰的花盆出現,中間一定要間隔至少一個空位。 問我們在給定的條件下,能不能順利種完n個花朵盆栽? 若可以返回True,若無解返回Fa
題目敘述 題目會給定一個有n個整數的陣列nums和指定的k值,問我們長度為k的子陣列的平均值的最大值是多少? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,12,-5,-6,50,3], k = 4 Output: 12.75000 Explanati
題目敘述 題目會給定我們一個整數陣列nums,我們每回合可以挑選總和為K的兩個數字,形成一個K-Sum pair。 請問我們最多可以製造幾個K-Sum pair? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4], k = 5 Output
題目敘述 題目會給定我們一個整數陣列nums,要求我們把裡面的0做元素交換,把0都搬到陣列的右邊。題目要求必須in-place在原本的陣列裡面做操作,不可以額外建立新的陣列。 題目的原文敘述 測試範例 Example 1: Input: nums = [0,1,0,3,12] Outpu
題目敘述 題目會給我們一個輸入陣列nums,要求我們判斷輸入陣列nums內部是否存在長度為三的遞增子序列? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4,5] Output: true Explanation: Any triplet wh
題目敘述 題目會給我們一個字串s作為輸入,要求我們以white space空白為切割符號,切割出每個單字,並且反轉其順序後,以字串形式最為最後的輸出。 題目的原文敘述 測試範例 Example 1: Input: s = "the sky is blue" Output: "blue i
題目敘述 題目會給定我們一格花盆陣列flowerbed,和欲種植的花朵數目n。 花盆陣列中,0代表空位,1代表已經有種好的花盆存在。 種花的要求是,不能有兩兩相鄰的花盆出現,中間一定要間隔至少一個空位。 問我們在給定的條件下,能不能順利種完n個花朵盆栽? 若可以返回True,若無解返回Fa
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
網頁設計是指創建和設計網站的過程,它包括許多不同的元素和技術,以確保網站在功能、使用性和視覺上具有吸引力。以下是網頁設計中常見的一些主要要素和概念: 1. 用戶體驗(User Experience,簡稱UX):網頁設計的核心是確保用戶在訪問網站時能夠獲得良好的用戶體驗。這包括易於導航的網站結構
Thumbnail
「隹」字的甲骨、金文都是畫出一隻鳥的側面,可看見鳥頭、翅膀,有時還會把鳥爪畫出來。《說文解字》細分「隹」字是短尾鳥,「鳥」字是長尾鳥,但其實「隹」和「鳥」作為表示與雀鳥有關形符時,並不分長尾和短尾鳥。以下舉一些字例說明。
Thumbnail
💞生命還有更多的些什麼,而我正在錯過它。 人是由一個神在其內部支配的載體創造出來的。它是神完美的體相,因為它能夠容納靈魂並使自己在神的聖靈之中。透過一個肉身,神可以觸摸花,聞到它的香味,而那些體驗將以感覺永遠地記錄在靈魂裡珍藏。
恭喜,2022感恩大家和已做到:種植~芹菜 空 青 高 蘿 蔥 蒜 洋 葵 九 菠 芽 香 研究植綠:攀树師 园艺治療師 花艺師 园艺景覌 植物絵、10本60w字Idea 奇怪點子之自動搬貨机器人、一生中持續工作,分享CV.....
Thumbnail
貴金屬一直是金融市場的常青藤,高需求也催生了諸多不斷演變的貴金屬投資方式。但是,一些沒有投資經驗的朋友並不瞭解種類繁多的貴金屬交易類型,那貴金屬都包含哪些投資方式呢?選擇哪種產品類型交易靈活最強呢?今天我們就來瞭解一下。 貴金屬都包含哪些投資方式? 現貨貴金屬投資為什麼最靈活?
Thumbnail
對預立醫療的理解、失智症病人與家屬照護的情緒關懷、面對死亡的態度、死後生者的追思,死亡一直都包含在生命之中,卻始終是我們避談甚至盡量假裝忘記的事,在向別人談及我最近編輯的書時,我發現自己都特別小心不敢輕易的就說出,這是一本和媽媽討論死亡的書。
完整禮儀服務天數有幾天?13天走完禮儀流程 根據內政部2006年的「臺閩地區殯葬消費行為調查研究」報告,禮儀流程從接體到安葬,通常花費的天數為10-13天左右。由於社會環境的變化與家庭結構的改變,現今的禮儀流程天數與早期相較已縮短許多。因為關係到場地使用與家屬配合等因素,禮儀服務的天數在現代也越來越
Thumbnail
一提到癌症,相信絕大部分朋友都會害怕,雖然目前部分癌症有治癒手段,預後效果也相對良好,但估計也沒人願意花錢去受這折磨。因此,進行科學的癌症預防和早期的癌症篩查相當重要。日常癌症檢查套餐,是我們早日發現身體的癌變危險重要防護,也是有效提高預後和生存率的“保險線”。那麼,癌症檢查套餐一般包含哪些專案才全
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
網頁設計是指創建和設計網站的過程,它包括許多不同的元素和技術,以確保網站在功能、使用性和視覺上具有吸引力。以下是網頁設計中常見的一些主要要素和概念: 1. 用戶體驗(User Experience,簡稱UX):網頁設計的核心是確保用戶在訪問網站時能夠獲得良好的用戶體驗。這包括易於導航的網站結構
Thumbnail
「隹」字的甲骨、金文都是畫出一隻鳥的側面,可看見鳥頭、翅膀,有時還會把鳥爪畫出來。《說文解字》細分「隹」字是短尾鳥,「鳥」字是長尾鳥,但其實「隹」和「鳥」作為表示與雀鳥有關形符時,並不分長尾和短尾鳥。以下舉一些字例說明。
Thumbnail
💞生命還有更多的些什麼,而我正在錯過它。 人是由一個神在其內部支配的載體創造出來的。它是神完美的體相,因為它能夠容納靈魂並使自己在神的聖靈之中。透過一個肉身,神可以觸摸花,聞到它的香味,而那些體驗將以感覺永遠地記錄在靈魂裡珍藏。
恭喜,2022感恩大家和已做到:種植~芹菜 空 青 高 蘿 蔥 蒜 洋 葵 九 菠 芽 香 研究植綠:攀树師 园艺治療師 花艺師 园艺景覌 植物絵、10本60w字Idea 奇怪點子之自動搬貨机器人、一生中持續工作,分享CV.....
Thumbnail
貴金屬一直是金融市場的常青藤,高需求也催生了諸多不斷演變的貴金屬投資方式。但是,一些沒有投資經驗的朋友並不瞭解種類繁多的貴金屬交易類型,那貴金屬都包含哪些投資方式呢?選擇哪種產品類型交易靈活最強呢?今天我們就來瞭解一下。 貴金屬都包含哪些投資方式? 現貨貴金屬投資為什麼最靈活?
Thumbnail
對預立醫療的理解、失智症病人與家屬照護的情緒關懷、面對死亡的態度、死後生者的追思,死亡一直都包含在生命之中,卻始終是我們避談甚至盡量假裝忘記的事,在向別人談及我最近編輯的書時,我發現自己都特別小心不敢輕易的就說出,這是一本和媽媽討論死亡的書。
完整禮儀服務天數有幾天?13天走完禮儀流程 根據內政部2006年的「臺閩地區殯葬消費行為調查研究」報告,禮儀流程從接體到安葬,通常花費的天數為10-13天左右。由於社會環境的變化與家庭結構的改變,現今的禮儀流程天數與早期相較已縮短許多。因為關係到場地使用與家屬配合等因素,禮儀服務的天數在現代也越來越
Thumbnail
一提到癌症,相信絕大部分朋友都會害怕,雖然目前部分癌症有治癒手段,預後效果也相對良好,但估計也沒人願意花錢去受這折磨。因此,進行科學的癌症預防和早期的癌症篩查相當重要。日常癌症檢查套餐,是我們早日發現身體的癌變危險重要防護,也是有效提高預後和生存率的“保險線”。那麼,癌症檢查套餐一般包含哪些專案才全