理解题目最近算法题比较多。希望用一个小问题记录下算法分析的过程。题目是:PigLatinPigLatiniisawayofalteringEnglishWords.Therulesareasfollows:Ifawordbeginswithaconsonant,takethefirstconsonantorconsonantcluster,moveittotheendoftheword,andadd“ay”toit.Ifawordbeginswithavowel,justadd“way”attheend.遇到这种描述比较少的题,第一反应就是题目描述越简单,隐藏条件就越多。不要慌,先看看维基百科对PigLatin的解释:PigLatin。看题目喜欢先看维基百科,了解题目的背景和出处,这样才能更好的理解题目,让解题更有趣。简单分析一下规则:单词以辅音开头时,将辅音移到末尾加ay如california→aliforniacay:c移到末尾再加ay段→aragraphspay:p移到末尾加ayglove→oveglay:gl移到末尾加上ay??这里是找出第一个元音前的所有辅音元音:a,e,i,o,u当单词以元音开头时,直接在单词后面加上way例如,algorithm→algorithmway:a是元音字母,所以在单词eight后面加way→eightway:e是元音字母,所以在单词后面加way。一:Shouldhandlewordswithoutvowels.translatePigLatin(“rhythm”)应该返回“rhythmay”。这条规则实际上满足了第一种情况。找不到元音时,后面直接加上ay解析过程。当我们拿到一道算法题时,按照几个套路来“围攻”1.算法分类,这道题是字符串题,对字符串的操作无外乎两种:a.根据索引遍历b。.2.由浅入深:根据给定的条件,暴力方向编写伪代码。b.根据逻辑找到关键的周期因素和优化方法。C。尝试优化伪代码并先编写伪代码。这部分代码比较粗糙,主要用来整理分析过程VARSTRVARvowelLetters=['a','e','i','o','u']//以元音开头IFSTR[0]invowelLettersreturnSTR+'way'//在STRIFSINvowelLetters中查找STR中的元音索引FOR(S,INDEX)returnSTR.slice(INDEX)+STR.slice(0,INDEX)+'ay'//单词中没有元音returnSTR+ay复制代码解析过程我们可以写JavaScript代码functiontranslatePigLatin(str){//准备需要的元音数组constvowelLetters=['a','e','i','o','u']//特殊情况:如果以元音开头if(vowelLetters.includes(str[0]))return`${str}way`//正常情况for(leti=0;i
