【问题标题】:Finding an sub-array inside an array and returning its location在数组中查找子数组并返回其位置
【发布时间】:2013-03-01 10:28:01
【问题描述】:

我知道我的问题类似于一些帖子,但我认为它有一些不同的方面。我希望在更大的数组中找到子数组或模式。我将使用具有数千甚至数百万行的数组,我需要在该数组中找到一个模式。我将要搜索的值与数组中的值相似。例如,我的 10,000 行数组将主要充满 1 的 0 的 L 和 H,我将在那里搜索某种模式,例如寻找 1 0 1 1 H。

据我所知,其他帖子上发布的大多数解决方案都在处理更小规模的数组,并且子数组与源数组更加不同。此外,当我在源数组中找到数组时,我需要返回该子数组的位置。 (我希望在 C# 中编写此代码)

【问题讨论】:

  • 子数组长度是否不同?
  • 您的问题与This Post有何不同
  • 您可以使用修改 Knuth-Morris-Pratt 算法进行子串搜索:en.wikipedia.org/wiki/…
  • 到目前为止,我的算法是遍历源数组并将我正在查看的元素与搜索数组中的第一个元素进行比较,如果它们相等,我将转到源数组中的下一个元素,然后缩短我正在寻找的图案的长度。这很好用,我只是假设有一种更有效更快的方法。
  • 响应长度是的,他们确实会改变搜索的模式取决于用户和他们正在寻找的内容。

标签: c# arrays sub-array


【解决方案1】:

这与子字符串搜索基本相同。它们都是关于在随机访问的更大序列中查找子序列。根据您的描述,听起来您的数组是一个字符数组,这正是字符串的含义。

您在笔记中描述的算法非常好,并且易于正确编码。如果不够快,请查看 KMP。

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多