精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一道算法小題的分析過程

開發 前端 算法
最近在看算法的問題比較多,希望能以一道小題,來記錄算法分析的過程。題目是: Pig Latin

[[384555]]

 理解題目

最近在看算法的問題比較多,希望能以一道小題,來記錄算法分析的過程。題目是: Pig Latin

  1. Pig Latin is a way of altering English Words. The rules are as follows: 
  2.  
  3. If a word begins with a consonant, take the first consonant or consonant cluster, move it to the end of the word, and add “ay” to it. 
  4.  
  5. If a word begins with a vowel, just add “way” at the end

 遇到這種描述比較少的題,第一反應是題目描述越簡單,隱藏條件就會多。不慌先看維基百科 對于 Pig Latin 的解釋: 豬拉丁 。我喜歡在看題目的時候,先看看維基百科,會了解下題目的背景和淵源,讓自己更好的理解題目的同時,讓解題也有些趣味性。簡單解析下規則:當一個單詞以輔音字母開頭,將輔音字母移到最后,并添加 ay 比如

  • california → aliforniacay : c 移動到最后然后添加 ay
  • paragraphs → aragraphspay:p 移動到最后然后添加 ay
  • glove → oveglay:gl 移動到最后然后添加 ay ⚠️ 這里是找到第一個元音字母之前的所有輔音字母

元音字母: a、e、i、o、u

當單詞以元音字母開頭的時候直接在單詞后面添加way 比如

  • algorithm → algorithmway : a 是元音字母所以在單詞后添加 way
  • eight → eightway : e 是元音字母所以在單詞后添加 way

題目分析完了,我們還需要通過閱讀測試用例來檢查是否有遺漏,看最后一條:

  1. Should handle words without vowels. translatePigLatin(“rhythm”) should return “rhythmay”. 

這個規則其實滿足第一種情況,當找不到元音的時候,直接在后面加 ay

分析過程

當我們拿到一道算法題目的時候,按照幾個套路來「攻城」

1.算法分類,這道題是字符串題,對于字符串的操作無非有兩種:

a.按索引遍歷

b.replace,replace 中尤其以正則不講武德。

2.由淺入深:

a.就是上來先根據給出的條件,按照暴力的方向去寫偽代碼

b.在根據邏輯找關鍵循環因子 和 優化手段

c.嘗試優化

偽代碼

先寫偽代碼,這部分代碼比較糙,主要用于整理分析過程

  1. VAR STR  
  2. VAR vowelLetters = ['a','e','i','o','u'
  3. // 以元音開頭 
  4. IF STR[0] in vowelLetters  
  5.     return STR + 'way' 
  6. // 在STR中找到元音索引 
  7. FOR (S, INDEXin STR  
  8.     IF S IN vowelLetters  
  9.         return STR.slice(INDEX) +  STR.slice(0,INDEX) + 'ay' 
  10. // 單詞中沒有元音      
  11. renturn STR + ay 
  12. 復制代碼 

分析過程有了我們可以寫JavaScript代碼了

  1. function translatePigLatin(str) { 
  2.     // 先準備需要的元音數組 
  3.     const vowelLetters = ['a','e','i','o','u'
  4.     // 特殊情況:如果以元音開頭 
  5.     if(vowelLetters.includes(str[0])) return `${str}way`     
  6.      
  7.     // 正常情況 
  8.     for (let i = 0; i < str.length; i++) { 
  9.         if(vowelLetters.includes(str[i])) { 
  10.             return `${str.slice(i)}${str.slice(0, i)}ay` 
  11.         } 
  12.     } 
  13.  
  14.     // 如果前面攔不住 說明沒有元音 
  15.     return `${str}ay` 
  16.  
  17. translatePigLatin("consonant"); 
  18. 復制代碼 

Review 上面👆代碼,已經可以通過測試了,那么分析如何優化 。從代碼中分析到整個核心的邏輯就落在 ${str.slice(i)}${str.slice(0, i)}ay 那么關鍵點在于找到 第一個元音的索引那么我們改代碼

  1. function translatePigLatin(str) { 
  2.     // 直接找索引 
  3.     let index = str.split('').findIndex(s => /[aeiou]/.test(s)) 
  4.  
  5.     if(index < 0)return `${str}ay` 
  6.     if (index === 0)return `${str}way` 
  7.     return `${str.slice(index)}${str.slice(0, index)}ay` 
  8.  
  9. translatePigLatin("consonant"); 
  10. 復制代碼 

代碼簡化一些,邏輯更清晰了

另一條路

從分析過程的路上來看,已經用循環遍歷的方法完成了,那么另一條路(replace)應該如何實現?第一種方法的結果來看,需要用到正則分組的方法來調換位置。思路是分兩組第一組是開頭到元音,第二組是元音到結尾。然后將這兩組順序調換后,添加后綴。在開發和調試正則的時候,推薦 regex101.com/ 來調試正則表達式


通過調試器來完成這個正則:/([^aeiou]*)(\w*)/ 解釋下

  1. 用兩個括號,分成兩組
  2. ([^aeiou]*) 表示匹配不是(^)aeiou 的0到多個字符。
  3. (\w*) 剩下字符是一組

完成代碼

  1. function translatePigLatin(str) { 
  2.     return str.replace(/([^aeiou]*)(\w*)/, '$2$1ay'
  3.  
  4. translatePigLatin("consonant"); 
  5. 復制代碼 

通過測試,👆上面的代碼已經,除了元音在開頭的情況沒有覆蓋,其他兩種情況是包含的。元音在開頭的時候,需要加的后綴為way, 也就是當 ([^aeiou]*) 匹配的不到的 $1 為空的時,后綴變成 ay 順著這個思路完善,JavaScript 字符串 replace 方法第二個參數是支持函數的 String.prototype.replace() - JavaScript | MDN

  1. function translatePigLatin(str) { 
  2.     return str.replace(/([^aeiou]*)(\w*)/, (_, p1, p2) => `${p2}${p1||'w'}ay`) 
  3.  
  4. translatePigLatin("consonant"); 
  5. 復制代碼 

總結

總結下 當拿到一道算法題的基本套路是

  1. 分類,是那一類的題,分完類后基本上能確定方向,比如樹的題大部分都要用到遞歸,如果你想刻意訓練遞歸,可以在樹分組下訓練。
  2. 先分析題目邏輯,先用簡單粗暴的方法把邏輯的偽代碼寫出來,然后再突破優化。
  3. Review 其他方向上是否有更優解。

最后給個小建議:如果你是短期想突破面試,刷leetcode。同時推薦:https://www.codewars.com/,相比之下codewars 更注重當前編程語言的實操,而不是以最優算法為目的,里邊有很多「意外驚喜」。會被很多「奇技淫巧|黑暗魔法」所折服。據坊間流傳 codewars 的難度上限更高。

 

責任編輯:姜華 來源: 前端思維框架
相關推薦

2009-08-11 10:12:07

C#算法

2009-08-11 14:59:57

一道面試題C#算法

2024-03-18 13:32:11

2009-08-11 15:09:44

一道面試題C#算法

2009-06-22 13:43:00

java算法

2011-08-18 09:33:23

2024-10-11 17:09:27

2014-04-29 14:58:24

筆試題微軟筆試題

2021-04-29 21:06:49

有序數組算法

2018-03-14 07:42:48

2011-05-23 11:27:32

面試題面試java

2022-04-08 14:50:37

存儲零信任安全

2018-03-06 15:30:47

Java面試題

2017-06-26 08:08:25

2020-08-07 11:23:31

網絡安全人工智能數據

2019-09-02 15:06:16

面試字節跳動算法

2022-01-19 11:39:15

數據治理大數據數據

2009-12-16 09:58:35

Chrome OS

2013-06-03 10:18:42

Ubuntu

2011-03-07 13:29:52

NeusoftJava API
點贊
收藏

51CTO技術棧公眾號

亚洲va久久久噜噜噜| 亚洲一级一级97网| 国产成人一二三区| 精品久久国产视频| 黄色成人精品网站| 日韩激情在线视频| 日韩毛片在线免费看| 成人亚洲性情网站www在线观看| 日本美女视频一区二区| 日韩中文字幕精品| 亚洲成人福利视频| 中老年在线免费视频| 成人av电影在线| 日本久久久久久久久| 亚洲一级黄色录像| 美女精品视频在线| 精品美女久久久久久免费| 日本电影一区二区三区| 欧美日韩一级黄色片| 欧美高清视频手机在在线| 欧美一区二区三区的| 国产精品无码av在线播放| 国产色a在线| 国产一区二区在线视频| 1769国产精品| 国产黄色片在线| 精品欧美视频| 精品久久久久久电影| 伊人色综合影院| 天堂在线视频免费| 蜜桃精品在线观看| 欧美福利视频在线观看| 在线免费观看麻豆| 日韩精品久久久久久久软件91| 色综合视频在线观看| 久久av喷吹av高潮av| 视频在线观看你懂的| 毛片一区二区三区| 欧美亚洲视频一区二区| 日韩在线一卡二卡| 妖精视频一区二区三区免费观看| 欧美一区二区性放荡片| 精品久久久久av| 免费在线中文字幕| 中文字幕一区二区三区在线不卡 | 欧美+日本+国产+在线a∨观看| 日韩电影网在线| 色哟哟网站在线观看| 成人黄色在线| 欧美日韩一区二区三区在线免费观看| 欧洲精品码一区二区三区免费看| 亚洲国产精品久久久久爰性色 | 中文字幕电影一区| 精品国产乱码久久久久久久软件| 99久久久国产精品无码网爆| 日韩国产欧美在线观看| 91精品国产99| 日干夜干天天干| 韩国av一区| 久久的精品视频| 少妇愉情理伦三级| 国产成人精品免费视| 亚洲精品国产suv| 国产综合内射日韩久| 白嫩亚洲一区二区三区| 欧美综合一区二区| 尤物国产在线观看| 精品久久国产一区| 亚洲国产福利在线| 熟女少妇一区二区三区| 欧美精品久久久久久| 深夜成人在线观看| 婷婷社区五月天| 欧美在线亚洲| 午夜精品视频网站| 99久久久无码国产精品免费蜜柚| 日韩高清一区在线| 成人激情视频在线| 亚洲精品网站在线| 久久这里只有精品6| 午夜老司机精品| 污污网站在线观看| 欧美视频中文字幕在线| 乌克兰美女av| 日韩欧美一级| 日韩高清av在线| 殴美一级黄色片| 欧美另类亚洲| 国产成人精彩在线视频九色| 91成品人影院| 99天天综合性| 亚洲欧洲精品一区二区| 亚洲色图美国十次| 一本到高清视频免费精品| 亚洲另类第一页| 欧美一性一交| 精品国偷自产在线视频| 日本在线免费观看| 久久综合综合久久综合| 国产精品视频入口| 午夜在线视频播放| 图片区小说区国产精品视频| 一道本在线免费视频| 国产精品xxx在线观看| 国产午夜精品免费一区二区三区| 2021亚洲天堂| 日韩高清欧美激情| 精品无人区一区二区三区| 在线视频婷婷| 婷婷久久综合九色综合绿巨人| 小泽玛利亚视频在线观看| 国产精品45p| 日韩有码在线视频| 亚洲 欧美 中文字幕| 国产精品99久久久久久久女警| 欧美精品v日韩精品v国产精品| 青青草视频在线免费直播| 欧美性生活久久| 亚洲精品在线视频免费观看| 欧美人与禽猛交乱配视频| 国产精品久久久久免费a∨大胸| 亚洲精品一区二区三区四区| 国产精品免费视频网站| 日日摸日日碰夜夜爽av| 亚洲日本va午夜在线电影| 日韩在线欧美在线国产在线| 天天综合天天干| 高清av一区二区| 三年中文高清在线观看第6集| 日韩欧美另类一区二区| 亚洲第一精品夜夜躁人人躁| 日本中文字幕免费在线观看| 蜜桃视频一区二区| 日韩在线导航| 国产 日韩 欧美一区| 日韩精品福利在线| 日本熟女一区二区| 福利91精品一区二区三区| 国产精品亚洲天堂| 久久精品嫩草影院| 色婷婷综合成人av| 亚洲在线观看av| 日本一区二区高清| 亚洲不卡视频在线| 欧美日韩123| 日本欧美国产在线| 男同在线观看| 色妞www精品视频| 亚洲a v网站| 久久精品动漫| 日韩hmxxxx| 欧美大片1688网站| 最近日韩中文字幕中文| 亚洲天堂视频在线播放| 欧美激情一区二区三区蜜桃视频 | 韩日精品视频一区| 亚洲美女自拍偷拍| 欧美三级一区| 欧美激情国产日韩精品一区18| 国内老熟妇对白hdxxxx| 亚洲黄色性网站| 国产国语老龄妇女a片| 亚洲午夜久久久久久尤物| 成人免费在线看片| 国产777精品精品热热热一区二区| 日韩高清免费观看| 中国老头性行为xxxx| 国产精品每日更新在线播放网址| 国产精品区在线| 888久久久| 国产精品一区二区三区在线 | 国产福利在线看| 欧美日韩一区二区三区四区| 丰满少妇被猛烈进入一区二区| 国产成人免费在线| 久久精品视频16| 国产一区二区区别| 91久久嫩草影院一区二区| 国产后进白嫩翘臀在线观看视频| 亚洲激情国产精品| 樱花视频在线免费观看| 国产精品不卡在线| 人妻精品久久久久中文字幕69| 亚洲激情不卡| 亚洲欧美综合一区| 国产suv精品一区| 国产成人一区二区三区小说 | 欧美一二三视频| 91社区在线高清| 精品国产免费人成在线观看| 亚洲AV无码成人精品区东京热| 日韩一区中文字幕| 中文字幕乱码在线| 久久av中文字幕片| 妞干网在线视频观看| 大胆日韩av| 国产亚洲欧美一区二区| 韩国精品视频在线观看| 国内伊人久久久久久网站视频| 成人av一区| 亚洲国产精品va在线| 中文字幕理论片| 亚洲成av人片在线观看| 久久精品日韩无码| 99精品视频免费在线观看| 午夜宅男在线视频| 国产精品久久久久毛片大屁完整版| 亚洲一区影院| 中国av一区| 999在线观看免费大全电视剧| 欧美日韩国产v| 欧美韩日一区二区| 国产二区三区在线| 亚洲午夜未满十八勿入免费观看全集| 国产黄色小视频在线观看| 欧美午夜片在线看| 欧美日韩一二三四区| 一区二区三区四区av| 欧美aaa级片| 久久久久久久久久久黄色| 亚洲精品激情视频| 国产麻豆视频一区| 中文字幕第17页| 久久婷婷丁香| 日本中文字幕网址| 欧美特黄a级高清免费大片a级| 亚洲免费不卡| 国产一区二区三区四区二区 | 欧美电影免费观看高清| 日韩wuma| 欧美色图国产精品| 欧美日韩一区二区三区在线视频 | 一区视频二区视频| 欧美激情在线精品一区二区三区| 国产欧美日本在线| 国内精品国产成人国产三级粉色| 91久久极品少妇xxxxⅹ软件| 高清一区二区| 成人性教育视频在线观看| 国产乱子精品一区二区在线观看| 国产成人精品在线观看| 欧美大片免费高清观看| 欧美一区二区三区免费视| 538在线观看| 久久久久久久久中文字幕| 日本性爱视频在线观看| 九九热精品视频在线播放| 精品孕妇一区二区三区| 久久视频免费观看| 在线免费av导航| 久久久久国产精品免费网站| 不卡av免费观看| 久久乐国产精品| а√在线天堂官网| 欧美壮男野外gaytube| 伊伊综合在线| 国产精品黄色av| 久久电影天堂| 91手机在线视频| 红杏一区二区三区| 久久国产手机看片| 九九久久精品| 亚洲午夜精品国产| 在线中文字幕亚洲| www污在线观看| 欧美一级网站| 免费看涩涩视频| 国产精品一区二区在线看| 人妻av一区二区三区| 99视频在线观看一区三区| 国产三级av在线播放| 国产精品美日韩| 国产亚洲精品久久久久久打不开 | 9久久9毛片又大又硬又粗| 国产精品色网| 久久国产这里只有精品| 国产成人在线观看免费网站| 亚洲一区二区在线免费| 欧美国产精品一区| 91在线播放观看| 欧美色播在线播放| 在线视频播放大全| 精品国产亚洲在线| 国产区视频在线| 欧美精品免费看| 成人美女视频| 亚洲综合第一页| 首页亚洲中字| 樱空桃在线播放| 小嫩嫩精品导航| 三级黄色片免费看| 久久综合久色欧美综合狠狠| 午夜三级在线观看| 图片区日韩欧美亚洲| 国产精品国产精品国产专区| 亚洲电影在线看| 免费看美女视频在线网站| 97精品在线视频| 日韩电影免费观看高清完整版在线观看| 国产高清在线一区| 日韩精品一区二区三区免费观看 | sm在线播放| 成人在线国产精品| 国产一区不卡| 男人添女荫道口图片| 九九精品视频在线看| 中出视频在线观看| 亚洲黄色免费电影| 亚洲视频在线观看一区二区| 日韩av在线免费播放| 成人在线直播| 国产精品丝袜久久久久久不卡| 国产精品流白浆在线观看| 一级黄色录像免费看| 日韩国产在线观看一区| 国产黄色三级网站| 亚洲精品视频观看| 在线观看毛片视频| 国产午夜精品视频| 性欧美18xxxhd| 国产美女99p| 欧美三级不卡| 天堂网成人在线| 中文成人av在线| 69亚洲精品久久久蜜桃小说| 亚洲精品一区二区三区精华液 | 亚洲一区二区不卡免费| 一区二区三区黄色片| 亚洲图片欧美午夜| 最近高清中文在线字幕在线观看1| 国产精品国产精品国产专区蜜臀ah| 久久精品影视| 三级黄色片播放| 亚洲视频1区2区| 国产精品久久久久久久久久久久久久久久久久 | 91超碰成人| 亚洲天堂网2018| 国产精品国产三级国产普通话99 | 午夜精品一区二区在线观看| 石原莉奈在线亚洲三区| 最近中文字幕在线mv视频在线| 欧美日韩在线影院| 色播色播色播色播色播在线| 97超碰色婷婷| 日韩动漫一区| 妞干网在线免费视频| 久久日韩精品一区二区五区| 天堂在线免费观看视频| 亚洲精品自产拍| 欧美freesex| 视频一区国产精品| 美女mm1313爽爽久久久蜜臀| 91av手机在线| 欧美一级黄色片| 肉体视频在线| 国产一区免费视频| 久久国产主播| 女人十八毛片嫩草av| 精品视频在线看| av免费在线网站| 999在线免费观看视频| 影音先锋一区| 亚洲欧美色图视频| 色94色欧美sute亚洲13| 91官网在线| 3d动漫精品啪啪一区二区三区免费| 国产一区二区三区四区老人| 中国xxxx性xxxx产国| 黑人狂躁日本妞一区二区三区| 国产视频网址在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 韩日视频一区| 亚洲av综合一区二区| 欧美喷潮久久久xxxxx| 羞羞网站在线看| 玛丽玛丽电影原版免费观看1977| 丝袜国产日韩另类美女| 亚洲欧美另类日本| 精品欧美一区二区久久| 奇米777日韩| 中国 免费 av| 91性感美女视频| 亚洲天堂中文网| 久久久久久久久爱| 精品国精品国产自在久国产应用| 尤物网站在线看| 色呦呦国产精品| 国产日产一区二区| 精品亚洲一区二区三区四区五区高| 日韩av成人高清| 黄色一级视频免费| 一本色道久久综合狠狠躁篇怎么玩 | 福利小视频在线观看| 亚洲综合日韩在线| 日韩精品1区2区3区| 麻豆chinese极品少妇| 国产午夜精品全部视频在线播放| 在线观看视频一区二区三区| 国产精品igao| 午夜电影久久久|