gpt4 book ai didi

c# - 如果列表有多个连续月份,则返回 true

转载 作者:行者123 更新时间:2023-11-30 12:45:14 25 4
gpt4 key购买 nike

我正在处理一个 C# 列表,它是 DateTime 类型,它有几行 dd/mm/yyyy 格式的数据,我我正在尝试找出一种方法,如果以下三个条件之一为 true

,该方法将返回 true
  1. 如果所有列表项都相等,即。相等的月份和年份很简单
  2. 如果月份和年份是连续的。

示例:

10/4/2016  
10/3/2016
10/2/2016
10/1/2016
10/12/2015

在上面,Month 和 Year 是按顺序排列的,因此该方法返回 true

3。如果列表中有多个连续的月份

示例:

10/2/2016   
10/1/2016
10/12/2015
10/2/2016
10/1/2016
10/12/2015
10/2/2016
10/1/2016
10/12/2015

在上面的列表中,它有三个连续月份 12/2015,1/2016,2/2016。因此,对于上面的列表,它应该返回 true。它应该返回 false 即使一个月是乱序的

我能够使用以下方法为第二种情况编写一个方法,其中 dd/yyyy 应该按顺序排列

for (var x = 1; x < terms.Count; ++x)
{
var d1 = terms[x - 1];
var d2 = terms[x];


if (d2.Year == d1.Year)
{
if ((d1.Month - d2.Month) != 1) return false;
continue;
}

if ((d1.Year - d2.Year) != 1) return false;
if (d1.Month != 1 || d2.Month != 12) return false;
}
return true;

有没有类似的方法可以检查第三个条件?

最佳答案

我不会使用月份和年份,但考虑添加时间。

DateTime currentDateTime;
foreach(var d in terms)
{
if(currentDateTime == default(DateTime))
{
currentDateTime = d;
}
else
{
currentDateTime = currentDateTime.AddMonths(1);
if(currentDateTime != d) return false;
}
}
return true;

对于相同序列的重复(这次是伪代码):

// Determine initial sequence
while(currentDateTime.AddMonths(1) == nextDateTime) count++;

// Make sure that the whole sequence is a multiple of the short sequence
if(totalLength % count != 0) return false;

// Check remaining sequences
for(iteration in 1 .. totalLength / count)
for(index in 1 .. count)
if(terms[index] != terms[count * iteration + index]) return false;

// No elements differed
return true;

关于c# - 如果列表有多个连续月份,则返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25389357/

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