FCC--Pig Latin(儿童黑话)

本文介绍了一种简单的 Pig Latin 算法实现,该算法用于改变英文单词的结构,通过将单词起始的辅音或辅音丛移至词尾并添加特定后缀来形成新的词汇形式。文章提供了两种实现方式,并对每种方式进行了详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 算法描述:
    把一个英文单词的第一个辅音或辅音丛(consonant cluster)移到词尾,然后加上后缀 “ay”。
    如果单词以元音开始,你只需要在词尾添加 “way” 就可以了。
    题目给出的例子的答案:
    translate(“california”) 应该返回 “aliforniacay”。
    translate(“paragraphs”) 应该返回 “aragraphspay”。
    translate(“glove”) 应该返回 “oveglay”。
    translate(“algorithm”) 应该返回 “algorithmway”。
    translate(“eight”) 应该返回 “eightway”。

  • 思路解析:
    1.先找到字符串中的第一个元音字母,然后判断这个元音字母的位置。
    2.如果是第一位,在字符串最后面加上way就ok了。
    3.如果不是第一位,那就记录下这个元音在该字符串的位置,然后将该位置前面的字符全部移到字符串末尾,最后再加上ay就ok了。

function translate(str) {
  var vowel_arr = ['a','e','u','i','o'];
  var index;
  for(var i = 0; i < str.length; i++){
    if(vowel_arr.indexOf(str[i]) !== -1){
          index = i;
          break;
    }
  }
  if(index)
    return str.substring(index)+str.substring(0,index)+'ay';

  return str + 'way';
}

translate("glove");

  • 优化一下
    可以用正则匹配来查找元音在字符串的位置,exec()可以返回匹配到的第一个字符的下标。
    判断也可以用||来代替。
function translate(str) {
  var vowelIndex = /[aeuio]/.exec(str).index;

  return str.substr(vowelIndex) + (str.substr(0,vowelIndex) || "w") + "ay";
}

translate("glove");

这下简单多了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值