五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ù)目的評論 (共 條)

分享到微博請遵守國家法律
出国| 沂源县| 鄂托克旗| 资中县| 宁化县| 积石山| 同心县| 安吉县| 桐柏县| 永德县| 隆林| 石首市| 天门市| 江津市| 尼勒克县| 亚东县| 磐安县| 禄丰县| 滨海县| 肥城市| 彭阳县| 衡水市| 黎川县| 仪征市| 盘山县| 泸溪县| 文水县| 枝江市| 金门县| 德格县| 蒙山县| 平南县| 满洲里市| 张家口市| 安顺市| 盐津县| 河南省| 德令哈市| 东乌珠穆沁旗| 台州市| 巴里|