我需要合并一个数组中的连续重复元素
[1, 2, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud)
变
[1, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud)
#uniq不适用于此目的.为什么?因为#uniq会产生这个:
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud) 鉴于数组:
arr = ['a','a','b','b','b','a','c']
Run Code Online (Sandbox Code Playgroud)
Ruby 中是否有一种快速方法可以删除重复的连续元素,但并非所有重复元素(如 arr.uniq)都会删除?预期输出将是:
['a','b','a','c']
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的。可以按如下方式遍历 Array,但是在 Ruby 中执行此操作的最简洁方法是什么?
def remove_repeats arr
new_arr = []
last_element = nil
arr.each do |x|
if last_element != x
new_arr << x
end
last_element = x
end
new_arr
end
arr = ['a','a','b','b','b','a','c','c']
puts remove_repeats(arr).join(',')
# => a,b,a,c
Run Code Online (Sandbox Code Playgroud)