获取递增序列c#

时间:2017-05-17 18:22:40

标签: c# sequence increment

给定一个简单的已经排序的整数列表,例如“1,2,5,7,8,9”,我如何得到每个子序列的第一个元素,以及它持续多长时间?

期望的结果将是:

  • 1:2
  • 5:1
  • 7:3

我怎样才能在c#中实现这个?

经过初步思考后,我想出了这个:

作为“horacitas”我的排序列表,例如值“8,12,13,16,17,18”:

   horacitas.Sort();
                    Dictionary<int, int> horas = new Dictionary<int, int>();
                    for(int i =0; i< horacitas.Count -1;i++)
                    {
                        int counter = 0;
                        int j = i;
                        while(horacitas[j+1]==  horacitas[j]+1 && j<horacitas.Count - 1)
                        {
                            counter++;
                            j++;
                        }
                        horas.Add(horacitas[i], counter);
                    }

但是我遇到了一些问题,我最终在序列中为每个项目添加了不需要的条目,而不仅仅是为了起始者(例如,我最终得到了13,17,18的条目)。 / p>

1 个答案:

答案 0 :(得分:2)

循环遍历。每次迭代,检查当前数字是否比最后一个高1。如果是,请将其添加到序列中。如果没有,请创建一个新序列。最后,打印出每个序列。

您可以随意存储“序列”。有多种方法可以做到。

修改 现在你已经提供了代码:

您遇到的问题是您的For-Loop正在迭代列表中的每个条目。你的方法是有一个内部while循环来获得每个序列。这很好,但需要调整。

试试这个:

if(document.location.search.length) {
   //query string exists - do something 
}
else
{
   //query string does not exist - do something
}

注意:此方法仅在没有值重复时才有效。例如,如果您有列表“5,5”,那么它将会出错,因为您无法将两次“5”添加到字典中。