检查数组中一个值与同一值相邻的次数

本文关键字:一个 数组 检查 | 更新日期: 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);