如果有两组选定项目,如何在列表中添加最大数量的选定项目?

时间:2010-12-29 05:53:15

标签: winforms c#-3.0

我有一个列表框,其中大约有10个项目。现在我在顶部(两个以上)选择几个项目,在中间选择一些项目。我想创建一个列表,其中包含这两个不同选择中连续选择的项目的最大数量。也就是说,如果顶部的选定项目数量少于中间几个选定项目的数量,则顶部的少数项目应该转到列表中。怎么做?我已经检查了连续性,如下所示:

 for (int i = 0; i < lb.SelectedIndices.Count - 1; i++)
{
    if (lb.SelectedIndices[i] < lb.SelectedIndices[i + 1] - 1)
        return false;
    return true;
}

1 个答案:

答案 0 :(得分:0)

只需跟踪当前子序列的长度,当您遇到不按顺序的索引时,请检查到目前为止看到的最长的连续子序列。

var indices = lb.SelectedIndices;
int count = 0;
int max = 0;
int first = -1;
for (int i = 0; i < indices.Count; i++)
{
    ++count;
    if (i == indices.Count - 1 || indices[i]  + 1 != indices[i + 1])
    {
        if (count > max)
        {
            max = count;
            first = i - count + 1;
        }
        count = 0;
    }
}
// max is the longest consecutive subsequence
// first is its starting index