1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
write me a function stringy that takes a size and returns a string of alternating '1s' and '0s'.

the string should start with a 1.

a string with size 6 should return :'101010'.

with size 4 should return : '1010'.

with size 12 should return : '101010101010'.

The size will always be positive and will only use whole numbers.

题目

题目意思很简单,函数输入一个正整数,返回对应长度的”1010…“字符串,字符串总是以’1’开头。

解法

自己的开始想到的第一解法就是遍历长度,每一位判断为1或者0,最后组装成字符串

1
2
3
def stringy(size)
  size.times.map{|n| n.even? ? '1' : '0' }.join
end

另一种解法,因为是”10”的循环,所以

1
2
3
def stringy(size)
  "10" * (size / 2) + "1" * (size % 2)
end

但是看别人的解法时发现ruby有提供一个rjust函数,因此更简单的解法:

1
2
3
def stringy(s)
  "".rjust(s, "10")
end