最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

1456. 定長子串中元音的最大數(shù)目

2023-04-18 17:18 作者:目標力扣Knight  | 我要投稿

1456. 定長子串中元音的最大數(shù)目

方法一:滑動窗口 + 匿名函數(shù)

類比 OS 中的基地址概念,將前k個字母構成的子字符串中元音字母的個數(shù)計算出來,然后以此開始遍歷從k位序開始的s串中的所有字母,動態(tài)的加上當前字母而減去最左段的字母,數(shù)值計算依賴于其字母是否為元音,元音則加減1,否則數(shù)值大小不變,利用滑動數(shù)組動態(tài)的更新遍歷過程中的最大元音字母個數(shù)

Python版本

?

C++版本

?



復雜度分析

  • 時間復雜度:O(N)。此處的 n 指的是字符串 s 的長度,值域為 [1, 100000]。

  • 空間復雜度:O(N)。同上,因為 k的值域可能為 [1, 100000]。

備注

  • 我之前的解決思路是:利用左右指針確定連續(xù)元音字母的邊界,但這種思路建立在一個錯誤的前提上,即元音字母連續(xù)出現(xiàn);

  • 而題目要求的是:包含元音字母最多的,既沒有限制種類,也沒有限制連續(xù)性,僅有子字符串是要求連續(xù)的

  • 當我想用雙端隊列來做滑窗,每次向右移動一個位置,左邊去掉一個字母,但這次我還需要動態(tài)計算雙端隊列中元音的個數(shù),或者說,我需要維護一個定長數(shù)組,這種思路很耗費資源

  • 題解的思路是:首先計算默認長度為k的字符串的元音字母的個數(shù),然后遍歷k長度起的所有字符,右邊加一個左邊減一個,將原本的遍歷統(tǒng)計元音字母個數(shù)的方式,改為動態(tài)累加新加入字母與刪除字母的元音個數(shù)

  • 總體而言,將一個滑窗問題轉換了數(shù)學計算

  • 反思:解題時仍然按照傳統(tǒng)的雙指針思路思考解題方法,基于錯誤的認知解題,嘗試了很多不同的方式; 第二點是思維能錄差異:并沒有思考將問題建模為數(shù)學的思路,或者在線算法等思路; 使用雙端隊列時,并沒有根據(jù)插入刪除字符計算元音字母個數(shù),而是直接遍歷整個區(qū)間字符串統(tǒng)計元音字母個數(shù)


解耦

  1. 匿名函數(shù)具有三段式的美感,既然我們都為函數(shù)注明了參數(shù)和返回值類型,那么何不對匿名函數(shù)也這么做呢;

  2. 注意匿名函數(shù)中的捕獲問題,本題中匿名函數(shù)使用了外部的函數(shù)來計算元音字母的個數(shù),需要判斷的函數(shù)其寫入捕獲列表;

  3. C++ 中的 switch case語句具有相當?shù)拿栏?,在Python當中可以用字典表達近似的效果


1456. 定長子串中元音的最大數(shù)目的評論 (共 條)

分享到微博請遵守國家法律
定安县| 建德市| 韶山市| 那坡县| 淮安市| 辽源市| 晋城| 广平县| 公主岭市| 准格尔旗| 宜川县| 云霄县| 从江县| 九台市| 汕头市| 文水县| 平潭县| 玛曲县| 宣恩县| 南涧| 长寿区| 长汀县| 嫩江县| 石河子市| 蓬莱市| 江门市| 钟祥市| 三原县| 望谟县| 环江| 西青区| 襄樊市| 甘孜县| 沿河| 正定县| 津市市| 云梦县| 梨树县| 洛川县| 白山市| 灵山县|