我需要找到一个数组中零子数组的数量:
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, 0,0和0, 0, 0。
计算零(6)的数量将无效。
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] #=> nil时i = array.size(由于i从1到array.size)。