freecodecamp上的算法题:
把指定的字符串翻译成 pig latin。
Pig Latin 把一个英文单词的第一个辅音或辅音丛(consonant cluster)移到词尾,然后加上后缀 "ay"。
如果单词以元音开始,你只需要在词尾添加 "way" 就可以了。
代码:
function translate(str) {
var vowel = ["a", "e", "i", "o", "u"];
if (vowel.indexOf(str[0]) != -1) {
return str + "way";
}
while (vowel.indexOf(str[0]) == -1) {
str = str.substr(1) + str.substr(0, 1);
}
return str + "ay";
}
translate("consonant");
测试:
translate("california")
应该返回 "aliforniacay"。 translate("paragraphs")
应该返回 "aragraphspay"。translate("glove")
应该返回 "oveglay"。translate("algorithm")
应该返回 "algorithmway"。translate("eight")
应该返回 "eightway"。思路及疑问: 1. 将元音放在数组中
2. 检测字符串首字母是否为元音
3. 如果是,则直接在字符串末尾加“way”
4. 如果不是,则将第一个辅音或辅音丛移到字符串末尾,再加“ay”
为什么用 if-else 不行?即无法辨认辅音丛?