付費限定

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

閱讀時間約 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題 解析+統整你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
86會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目敘述 題目會給定一個有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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
網頁設計是指創建和設計網站的過程,它包括許多不同的元素和技術,以確保網站在功能、使用性和視覺上具有吸引力。以下是網頁設計中常見的一些主要要素和概念: 1. 用戶體驗(User Experience,簡稱UX):網頁設計的核心是確保用戶在訪問網站時能夠獲得良好的用戶體驗。這包括易於導航的網站結構
Thumbnail
「隹」字的甲骨、金文都是畫出一隻鳥的側面,可看見鳥頭、翅膀,有時還會把鳥爪畫出來。《說文解字》細分「隹」字是短尾鳥,「鳥」字是長尾鳥,但其實「隹」和「鳥」作為表示與雀鳥有關形符時,並不分長尾和短尾鳥。以下舉一些字例說明。
Thumbnail
💞生命還有更多的些什麼,而我正在錯過它。 人是由一個神在其內部支配的載體創造出來的。它是神完美的體相,因為它能夠容納靈魂並使自己在神的聖靈之中。透過一個肉身,神可以觸摸花,聞到它的香味,而那些體驗將以感覺永遠地記錄在靈魂裡珍藏。
恭喜,2022感恩大家和已做到:種植~芹菜 空 青 高 蘿 蔥 蒜 洋 葵 九 菠 芽 香 研究植綠:攀树師 园艺治療師 花艺師 园艺景覌 植物絵、10本60w字Idea 奇怪點子之自動搬貨机器人、一生中持續工作,分享CV.....
Thumbnail
貴金屬一直是金融市場的常青藤,高需求也催生了諸多不斷演變的貴金屬投資方式。但是,一些沒有投資經驗的朋友並不瞭解種類繁多的貴金屬交易類型,那貴金屬都包含哪些投資方式呢?選擇哪種產品類型交易靈活最強呢?今天我們就來瞭解一下。 貴金屬都包含哪些投資方式? 現貨貴金屬投資為什麼最靈活?
Thumbnail
對預立醫療的理解、失智症病人與家屬照護的情緒關懷、面對死亡的態度、死後生者的追思,死亡一直都包含在生命之中,卻始終是我們避談甚至盡量假裝忘記的事,在向別人談及我最近編輯的書時,我發現自己都特別小心不敢輕易的就說出,這是一本和媽媽討論死亡的書。
完整禮儀服務天數有幾天?13天走完禮儀流程 根據內政部2006年的「臺閩地區殯葬消費行為調查研究」報告,禮儀流程從接體到安葬,通常花費的天數為10-13天左右。由於社會環境的變化與家庭結構的改變,現今的禮儀流程天數與早期相較已縮短許多。因為關係到場地使用與家屬配合等因素,禮儀服務的天數在現代也越來越
Thumbnail
一提到癌症,相信絕大部分朋友都會害怕,雖然目前部分癌症有治癒手段,預後效果也相對良好,但估計也沒人願意花錢去受這折磨。因此,進行科學的癌症預防和早期的癌症篩查相當重要。日常癌症檢查套餐,是我們早日發現身體的癌變危險重要防護,也是有效提高預後和生存率的“保險線”。那麼,癌症檢查套餐一般包含哪些專案才全
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
網頁設計是指創建和設計網站的過程,它包括許多不同的元素和技術,以確保網站在功能、使用性和視覺上具有吸引力。以下是網頁設計中常見的一些主要要素和概念: 1. 用戶體驗(User Experience,簡稱UX):網頁設計的核心是確保用戶在訪問網站時能夠獲得良好的用戶體驗。這包括易於導航的網站結構
Thumbnail
「隹」字的甲骨、金文都是畫出一隻鳥的側面,可看見鳥頭、翅膀,有時還會把鳥爪畫出來。《說文解字》細分「隹」字是短尾鳥,「鳥」字是長尾鳥,但其實「隹」和「鳥」作為表示與雀鳥有關形符時,並不分長尾和短尾鳥。以下舉一些字例說明。
Thumbnail
💞生命還有更多的些什麼,而我正在錯過它。 人是由一個神在其內部支配的載體創造出來的。它是神完美的體相,因為它能夠容納靈魂並使自己在神的聖靈之中。透過一個肉身,神可以觸摸花,聞到它的香味,而那些體驗將以感覺永遠地記錄在靈魂裡珍藏。
恭喜,2022感恩大家和已做到:種植~芹菜 空 青 高 蘿 蔥 蒜 洋 葵 九 菠 芽 香 研究植綠:攀树師 园艺治療師 花艺師 园艺景覌 植物絵、10本60w字Idea 奇怪點子之自動搬貨机器人、一生中持續工作,分享CV.....
Thumbnail
貴金屬一直是金融市場的常青藤,高需求也催生了諸多不斷演變的貴金屬投資方式。但是,一些沒有投資經驗的朋友並不瞭解種類繁多的貴金屬交易類型,那貴金屬都包含哪些投資方式呢?選擇哪種產品類型交易靈活最強呢?今天我們就來瞭解一下。 貴金屬都包含哪些投資方式? 現貨貴金屬投資為什麼最靈活?
Thumbnail
對預立醫療的理解、失智症病人與家屬照護的情緒關懷、面對死亡的態度、死後生者的追思,死亡一直都包含在生命之中,卻始終是我們避談甚至盡量假裝忘記的事,在向別人談及我最近編輯的書時,我發現自己都特別小心不敢輕易的就說出,這是一本和媽媽討論死亡的書。
完整禮儀服務天數有幾天?13天走完禮儀流程 根據內政部2006年的「臺閩地區殯葬消費行為調查研究」報告,禮儀流程從接體到安葬,通常花費的天數為10-13天左右。由於社會環境的變化與家庭結構的改變,現今的禮儀流程天數與早期相較已縮短許多。因為關係到場地使用與家屬配合等因素,禮儀服務的天數在現代也越來越
Thumbnail
一提到癌症,相信絕大部分朋友都會害怕,雖然目前部分癌症有治癒手段,預後效果也相對良好,但估計也沒人願意花錢去受這折磨。因此,進行科學的癌症預防和早期的癌症篩查相當重要。日常癌症檢查套餐,是我們早日發現身體的癌變危險重要防護,也是有效提高預後和生存率的“保險線”。那麼,癌症檢查套餐一般包含哪些專案才全