查找数组中零子数组的数量

Y.Z*_*Y.Z -3 ruby algorithm

我需要找到一个数组中零子数组的数量:

array = [1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1]
Run Code Online (Sandbox Code Playgroud)

结果应该是:3因为我们有0, 000, 0, 0

计算零(6)的数量将无效。

Car*_*and 5

array.join.squeeze('0').count('0')
  #=> 3
Run Code Online (Sandbox Code Playgroud)

我们有

s = array.join
  #=> "11100111101110001" 
t = s.squeeze('0')
  #=> "11101111011101" 
t.count('0')
  #=> 3 
Run Code Online (Sandbox Code Playgroud)

请注意,一个字符可能会挤压所有字符,而不仅仅是零(squeeze而不是squeeze('0'))。

其它的办法:

array = [1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0]

array.select.with_index(1) { |n,i| n.zero? && array[i] != 0 }.size
  #=> 3
Run Code Online (Sandbox Code Playgroud)

如此处所示,当的最后一个元素array为零array[i] #=> nili = array.size(由于i1array.size)。