Swift 如何反转数组中按指定属性连续同值构成的子组元素
实现方案
核心逻辑
- 遍历原数组,将连续
color属性相同的元素划分为独立子组,子组之间保留原有先后顺序 - 仅对每个子组内部的元素执行反转操作,子组的排列顺序不做调整
- 将所有处理后的子组拼接为最终的一维数组
代码实现(Ruby示例,与你给出的代码语法匹配)
# slice_when按连续同color拆分分组,flat_map反转每组后拼接为新数组 processed_vehicles = Vehicles.slice_when { |prev, current| prev.color != current.color } .flat_map { |group| group.reverse }
效果说明
对于你给出的示例输入:
- 首先拆分得到三个子组:
[red组的三个Auto元素, blue组的单个Bike元素, black组的单个Bike元素] - 分别反转后,单元素的blue、black组无变化,red组顺序反转
- 拼接后得到的结果和你给出的预期输出完全一致,也满足你补充的
[a,b,c,d,e,f,g,h,i]转化为[c,b,a,f,e,d,i,h,g]的规则。
内容的提问来源于stack exchange,提问作者vamp
相关产品推荐
相关产品推荐

