iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
0
自我挑戰組

Codewar 進進出出 JS/Ruby系列 第 10

高高低低起起伏伏,人生阿~

  • 分享至 

  • xImage
  •  

題目:
(6 級) WeIrD StRiNg CaSe
請寫出一個命名為 weirdcase 的 function,接受參數 string 並且回傳偶數 index 字母皆為大寫,奇數 index 字母皆為小寫的 string
傳入的參數 string 只會包含英文字母和空白字元 (' ')。
空白字元只會出現在有好幾個單字的 string 中,單字之間只會被單一個空白字元 (' ')分開。

思考方式:

  1. 先把傳入的 string 依照單字拆開成陣列
  2. 再把每個單字中的字母又獨立拆成一個小陣列
  3. 如果字母的 index 為偶數則轉成大寫,反之則轉成小寫

Ruby 解法:

def weirdcase string
  # 先把傳入的 string 拆成陣列再用 map 一個個拿出來做運算
  string.split.map {|str|
	
    # 裡面的每個單字也各自拆開,並且同時需要 index 作為判斷
    str.split("").map.with_index { |char, index|
		
      # 若 index 為偶數便將該字母轉成大寫,反之轉成小寫
      index.even? ? char.upcase : char.downcase
			
    # 把每個單字的陣列轉回字串
    }.join
		
  # 再把 string 的陣列轉回字串,並在每個單字間加入空白字元
  }.join(" ")
end

JavaScript 解法:

function toWeirdCase(string){
  // 先把傳入的 string 拆成陣列再用 map 一個個拿出來做運算
  return string.split(" ").map(str => {
	
    // 裡面的每個單字也各自拆開,並且同時需要 index 作為判斷
    return str.split("").map((char, index) => {
		
      // 若 index 為偶數便將該字母轉成大寫,反之轉成小寫
      return index % 2 === 0 ? char.toUpperCase() : char.toLowerCase()
			
    // 把每個單字的陣列轉回字串
    }).join("");
		
  // 再把 string 的陣列轉回字串,並在每個單字間加入空白字元
  }).join(" ");
}

上一篇
水仙花數
下一篇
我全都要
系列文
Codewar 進進出出 JS/Ruby30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言