gpt4 book ai didi

C#/Linq 获取相邻的集合

转载 作者:太空狗 更新时间:2023-10-29 21:24:18 25 4
gpt4 key购买 nike

我有一个有序列表0,1,2,6,7,10

我想获得数字递增 1 的集合。我想要第一个数字和计数或系列。

所以我会得到
开始=0,计数=3
开始=6,计数=2
开始=10,计数=1

我如何在 C# 中做到这一点?

答案是我认为最好的方式。对我而言,可读性比性能更重要。

最佳答案

定义一个简单的类来保存结果:

    private class Set
{
public int Start = 0;
public int Count = 0;
}

你可以使用这样的方法:

    private static IEnumerable<Set> GetSets(List<int> src)
{
List<Set> rtn = new List<Set>();
int previous = int.MaxValue;

foreach (int i in src)
{
if (i == previous + 1)
{
rtn[rtn.Count - 1].Count += 1;
}
else
{
rtn.Add(new Set() { Start = i, Count = 1 });
}

previous = i;
}

return rtn;
}

我不喜欢 int.MaxValue 的神奇值(value),但它在第一次迭代时节省了额外的逻辑。

调用 GetSets(new List<int>() { 0, 1, 2, 6, 7, 10 })正确给出您需要的结果。

关于C#/Linq 获取相邻的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7064157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com