我正在尝试使用Linq在整数列表中查找特定模式的出现次数。
我有一个零和一的列表。
例如: 清单:000001111100000 ... 我想找到011的发生次数
答案 0 :(得分:4)
假设这是给你的:
var list = "000001111100000".Select(x => int.Parse(x.ToString())).ToList();
var pattern = new[] { 0, 0, 1 };
您可以通过以下方式找到发生次数:
var count = Enumerable.Range(0, list.Count - pattern.Length + 1)
.Count(x => list.Skip(x).Take(pattern.Length).SequenceEqual(pattern));
答案 1 :(得分:1)
假设您的列表已经排列好(这是一个很大的假设),则可以从列表中创建一个字符串,如下所示:
var numStr = string.Join("", myList);
然后从那里可以使用正则表达式获取模式的计数:
var pattern = "011";
var patternCount = Regex.Matches(numStr, pattern).Count;