我正在考虑应用程序,它将在存储的IEnumerable上找到一些重复的模式到目前为止,我发现的是按顺序找到给定的子序列——这是相当容易的。
我想我需要的是:
找出是否有任何未知子项出现多次
(注意它的样子和放置位置)
查找子序列的未知子序列递归,直到
找到的图案的长度比4(即)长
目前我有两个想法要进一步研究,但我相信有现成的算法来处理这样的问题。
思想
在我想去的地方
保留为myobject的第一次出现的关键字,然后列出以下列表
每次迭代时展开列表时发生然后做
任何找到的模式的递归查找。
实现hoffman编码,因为我认为它在某种程度上属于这个
问题。

最佳答案

我不完全清楚你在问什么——你能举个例子说明你正在处理的对象和预期的结果吗?
下面是一个基于其中一个回答的例子。。。
考虑

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/

10-10 07:19