FreeCodeCamp筆記之:Pig Latin

題目

把指定的字符串翻譯成 pig latin。
Pig Latin 把一個(gè)英文單詞的第一個(gè)輔音或輔音叢(consonant cluster)移到詞尾,然后加上后綴 "ay"。
如果單詞以元音開(kāi)始,你只需要在詞尾添加 "way" 就可以了。
如果你被難住了,記得使用 Read-Search-Ask嘗試與他人結(jié)伴編程、編寫(xiě)你自己的代碼。
這是一些對(duì)你有幫助的資源:
Array.indexOf()
Array.push()
Array.join()
String.substr()
String.split()

思路

  • 看起來(lái)是一個(gè)文字游戲,外國(guó)人的文字游戲也挺好玩的;
  • 不過(guò)恕我文盲,輔音和輔音叢是神馬玩意,還有元音.....看來(lái)要?jiǎng)佑?Read大法了;
  • Read 大法好啊,大概有4種情況:
    *1. 第一個(gè)字母是輔音,比如:lay、car、bus...,就把第一個(gè)字母加上 ay 移動(dòng)到單詞末尾,變成 aylay、arcay、usbay;
    *2. 前幾個(gè)字母都是輔音(輔音叢),比如:Chrome、fly、play,就把前幾個(gè)輔音都 加上 ay 移動(dòng)到單子末尾,變成 omeChray、yflay、ayplay;
    *3.第一個(gè)字母是元音,比如:away、alarm、omelet,就把單詞直接加上 way,變成 awayway、alarmway、omeletway;
    *4.單詞中有多個(gè)元音音節(jié)的,比如:island、every、under,依元音分節(jié),把第一節(jié)加上 ay 移動(dòng)到單詞末尾,變成 andislay、eryevay、erunday;
  • 看題目只要求了1、2、3 三種情況;
  • 因此第一步可以先定義一個(gè)變量存放所有元音字母;
  • 第二步順序檢查str的字符,是用 indexOf() 檢查字符是否存在第一個(gè)變量中,得出輔音從的長(zhǎng)度存入變量 i;碰到第一個(gè)元音時(shí),循環(huán)結(jié)束,得出輔音從長(zhǎng)度;
  • 最后判斷:如果輔音從長(zhǎng)度為i=0,則直接加上 way;否則str 截取 i之后的字符加上 i之前的字符再加上 ay;

解答

function translate(str) { 
  var y=['a','e','i','o','u']; //定義元音 
  var i=0; //保存輔音叢的長(zhǎng)度
  while(i<str.length){  
    if(y.indexOf(str[i])=== -1){ // indexOf 比較結(jié)果為 -1時(shí),則說(shuō)明不存在,即當(dāng)前比較的字母不為元音;
      i++;  // 記錄輔音叢長(zhǎng)度
    }
    else{
      break;
    }
  }
  if(i===0){
    return str+"way";    //元音開(kāi)頭
  }
   else{
    return str.substr(i)+str.substr(0,i)+"ay";    //輔音叢開(kāi)頭
  }
  return a;
}

這一節(jié)主要是indexOf(),還有substr()的用法;
一開(kāi)始對(duì)substr不熟,沒(méi)想到截取怎么做,硬是將循環(huán)的字符一個(gè)個(gè)的 分別存入2個(gè)變量,然后用join來(lái)拼接,最終結(jié)果出現(xiàn)錯(cuò)誤,找了半天沒(méi)找出錯(cuò)誤在哪,后來(lái)看到題目推薦的 substr,感覺(jué)這個(gè)應(yīng)該是可以用上,仔細(xì)閱讀發(fā)現(xiàn)果然可以;
還是要仔細(xì)學(xué)習(xí)題目推薦的所有函數(shù),有大用!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容