有如下代码:
var data = JsonSerializer.Deserialize<int[]>(Console.ReadLine()).ToList();
Console.Write(data.Zip(data.Skip(1), (f, s) => f == s).Count(x => x));
它工作正常,但可以进一步缩短吗?我调用“data”变量两次。首先,对其调用 Zip 方法,然后它充当该方法中的参数。是否可以以某种方式在方法中指定调用该方法的对象应作为参数?或者也许这里可以通过调用另一个方法来完成一些事情?一般来说,是否可以一行解决这个问题?
代码解决的问题在这里:
您有一个包含用户输入数据的数据变量。 data - 整数元素列表。编写一个代码来查找连续相同数字的系列数。将结果写入结果变量。例如,在这样的列表中 [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] - 6 集
本质上,您需要在每次迭代时存储该系列的先前值和数量。 Linq 中有一个用于此目的的聚合方法。它可以存储这个并返回这个结构作为结果,并且您已经可以从中获取该系列的数量