gpt4 book ai didi

c# - 在列表中查找相似(或相等的连续项目)

转载 作者:太空宇宙 更新时间:2023-11-03 17:52:38 25 4
gpt4 key购买 nike

我正在开发让教师对论文进行评分的软件,我需要了解教师是否对连续 3 篇论文给出了相同的评分。基本上我有一个成绩列表:

80,81,90,90,90,100,85,86,86,79,95,95,95

我需要在此列表中识别 90 年代和 95 年代(它们每个都连续给出 3 次)。

PS-对于那些一直将我的帖子标记为“家庭作业”的人来说,仅仅因为我在处理学生和成绩并不意味着这是一项类作业。吉米尼。

最佳答案

你可以很容易地通过循环 i 来做到这一点。从 2 到 list.Length并检查 list[i] == list[i - 1] && list[i - 1] == list[i - 2] .

例如,它可以这样写:

var list = new[] { 80,81,90,90,90,100,85,86,86,79,95,95,95 };
var dupes = new List<int>();
for(var i = 2; i < list.Length; i++) {
if(list[i] == list[i - 1] && list[i] == list[i - 2])
dupes.Add(list[i]);
}

[编辑]
这是一个运行示例: http://ideone.com/UGwFwq

如果您不希望在连续有 4 个(或更多)等于时重复报告,防止这种情况发生的一个好方法是简单地将临时变量保留在前一个“连续 3 个”上,并在之前检查你追加到欺骗列表。

像这样的东西:
var list = new[] { 80,81,90,90,90,90,90,90,100,85,86,86,79,95,95,95,95 };
var dupes = new List<int>();
int? prev = null;
for(var i = 2; i < list.Length; i++) {
if(list[i] == list[i - 1] && list[i] == list[i - 2]) {
if(!prev.HasValue || prev.Value != list[i]) {
dupes.Add(list[i]);
prev = list[i];
}
}
}

展示: http://ideone.com/jbokMQ

[编辑 2]
如果由于某种原因您 需要以类似 LINQ 的方式运行它(例如,如果你有一个巨大的数据集或数据流并且你想以一种惰性的方式运行它),可以在这里找到一个解决方案: http://ideone.com/R1ZBVk

关于c# - 在列表中查找相似(或相等的连续项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915614/

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