检查数组中一个值与同一值相邻的次数
本文关键字:一个 数组 检查 | 更新日期: 2023-09-27 18:06:44
假设c#中有这样一个数组:
int myList = {1,4,6,8,3,3,3,3,8,9,0}
我想知道一个值(比如从0-9)是否在列表中紧邻它自己,以及有多少次。在这种情况下,值3在它自己旁边,它有4次重复。如果我有一个列表{0,1,2,3,4,5,5,6,7},那么值5就在它自己旁边,并且有2次重复。
重复次数限制为5次。任何值不能重复超过5次。我只做了if语句,但我知道还有更好的方法。
问题的标准不是那么好,而是写出答案
int lastValue = myList[0];
int times = 0;
foreach (int value in myList) {
if (lastValue == value) {
times++;
}
else if (times <= 1) {
lastValue = value;
times = 1;
}
else
break;
}
你只需要迭代你的列表,并保留一个计数器,只计算连续重复的整数。
如果您想要一个更简洁的解决方案,您可以考虑在nuget上使用一个名为morelinq的开源库(由Jon Skeet和其他几个人创建)。它为LINQ提供了有用的扩展方法。
其中一个叫做GroupAdjacent
,它适用于你的问题。
var testList = new[] { 1, 4, 6, 8, 3, 3, 3, 3, 8, 9, 0 };
var groups = testList.GroupAdjacent(t => t);
var groupsWithMoreThanOneMember = groups.Where(g => g.Count() > 1);