gpt4 book ai didi

c# - 如何在序列中找到未知的重复子序列?包括子序列的递归搜索

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:08:04 27 4
gpt4 key购买 nike

我正在考虑将在存储的 IEnumerable 上找到一些重复模式的应用程序。到目前为止,我发现的是按顺序查找给定的子序列——这相当容易。

我认为我需要的是:

  • 找出是否有任何未知的子序列出现不止一次(注意它的样子,放在哪里)
  • 找到子序列的未知子子序列递归直到找到的模式长度大于 4 (ie)

目前我有两个想法需要进一步研究,但我确信有现成的算法可以处理此类问题。

想法

  • 制作Dictionary<List<MyObject>, List <List<MyObject>> >我会在哪里将 MyObject 的第一次出现作为关键,然后是以下列表每次迭代都会扩展列表。然后做任何已发现模式的递归发现。
  • 实现霍夫曼编码,因为我认为它在某种程度上属于这个问题。

最佳答案

我不是很清楚你在问什么——你能举例说明你正在使用的对象和预期的结果吗?

这是一个基于其中一个响应的示例...

考虑

class Person
{
public string Name;
}

你可以做到

var people = new List<Person>() { new Person() { Name="Joe" },
new Person() { Name="Jim" },
new Person() { Name="Jack" },
new Person() { Name="Joe" },
new Person() { Name="Jim" } };

var duplicateItems = from x in people
group x by x.Name into grouped
where grouped.Count() > 1
select grouped.Key;

duplicateItems,在这种情况下,是字符串的集合(名称):{"Joe","Jim"}

如果您正在寻找实际的 Person 对象,那么您可以这样做(我想有更好的方法将其与上面的结合):

var duplicatePeople = from x in people
where duplicateItems.Contains<string>(x.Name)
select x;

这将返回 Person 对象的集合(两个 Joe 的和两个 Jim 的)

关于c# - 如何在序列中找到未知的重复子序列?包括子序列的递归搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22796727/

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