C# 值与数组中相同值相邻的检查次数

C# 值与数组中相同值相邻的检查次数,c#,C#,假设我在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紧挨着它自己,有两个重复 重复次数限制为5次。任何值都不能重复超过5次。我所做的就是做if语句,但我知道有更好的方法来做。问题的标准不是那么好,而是写答案 int lastValue = myList[0];

假设我在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紧挨着它自己,有两个重复


重复次数限制为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;
        }

您只需在列表上迭代,并保留一个只计算连续重复整数的计数器。

如果您想要一个更简洁的解决方案,您可以考虑使用Jon Skeet和其他一些人所称的开源库。它为LINQ提供了有用的扩展方法

其中一个称为groupnextant,适用于您的问题

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);

发布你已经尝试过的内容。如果你有{3,3,3,5,5,7,7}欢迎使用。你的问题可以理解为一系列的要求。有代码显示吗?你做了什么研究?这些东西将帮助我们帮助你。祝你好运此外,我删除了unity3d标记,因为问题与unity3d无关