gpt4 book ai didi

c# - 减少字符串数组中序列的最佳方法

转载 作者:太空狗 更新时间:2023-10-29 21:48:19 24 4
gpt4 key购买 nike

拜托,现在我已经重写了这个问题,并且在它受到进一步的影响之前 fast-gun answers或通过 eager editors 提前关闭让我指出这不是 this question 的副本.我知道如何从数组中删除重复项。

这道题是关于从数组中移除序列,而不是严格意义上的重复项。

考虑数组中的这个元素序列;

[0] a
[1] a
[2] b
[3] c
[4] c
[5] a
[6] c
[7] d
[8] c
[9] d

在这个例子中我想获得以下...

[0] a
[1] b
[2] c
[3] a
[4] c
[5] d

请注意,保留了重复元素,但同一元素的序列已减少为该元素的单个实例。

此外,请注意,当两行重复时,应将它们缩减为一组(两行)。

[0] c
[1] d
[2] c
[3] d

...减少到...

[0] c
[1] d

我正在用 C# 编写代码,但任何语言的算法都值得赞赏。

最佳答案

编辑:做了一些更改和新建议

滑动窗口怎么样...

REMOVE LENGTH 2: (no other length has other matches)
//the lower case letters are the matches
ABCBAbabaBBCbcbcbVbvBCbcbcAB
__ABCBABABABBCBCBCBVBVBCBCBCAB

REMOVE LENGTH 1 (duplicate characters):
//* denote that a string was removed to prevent continual contraction
//of the string, unless this is what you want.
ABCBA*BbC*V*BC*AB
_ABCBA*BBC*V*BC*AB

RESULT:
ABCBA*B*C*V*BC*AB == ABCBABCVBCAB

这当然是从length=2开始,增加到L/2然后向下迭代。

我也在考虑另外两种方法:

  1. digraph - 使用数据设置一个有状态的有向图,并使用字符串对其进行迭代,如果找到一个循环,您将有一个重复。我不确定检查这些循环有多容易……可能是一些动态编程,所以它可能等同于下面的方法 2。我将不得不再考虑这个问题。
  2. distance matrix - 使用 levenstein 距离矩阵,您可能能够检测到成本为 0 的对角线移动(偏离对角线)的重复。这可能表示数据重复。我将不得不更多地考虑这一点。

关于c# - 减少字符串数组中序列的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57010/

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