【发布时间】:2019-11-06 18:10:57
【问题描述】:
将列表元素中的连续相同值替换为另一个给定值的有效方法是什么,但前提是连续序列运行超过一定数量的元素(例如:大于或等于 5)
例子:
[“红色”; “红色的”; “蓝色”; “绿色”; “绿色”; “红色”; “红色的” ; “红色的”; “红色的”; “红色的”; "红色"; "黄色"; “白色的”; “白色的”; “红色的”; “白色的”; “白”]
应该变成:
[“红色”; “红色的”; “蓝色”; “绿色”; “绿色”; “忽略”; “忽视” ; “忽视”; “忽视”; “忽视”; "忽略"; "黄色"; “白色的”; “白色的”; “红色的”; “白色的”; “白”]
有什么想法吗?
【问题讨论】:
-
你有什么想法吗?
-
高效方式是主观的,你是指速度、内存、代码行数、可读性吗?无论哪种方式 O(n)
for循环,具有第一个索引、最后一个值和重复计数器。当达到阈值时,它将给定的单词覆盖到当前索引并继续前进。没有必要想太多。你可以喜欢 Linq 但我认为这会不太直观 -
MoreLinq 的
GroupAdjacent是您可以开始的地方。 -
如何枚举列表,跟踪前一个值,以及第一个相同值的索引?
标签: c# arrays list duplicates contiguous