c# - 检查数组是否包含与其他数组完全相同的序列

标签 c# arrays

我有一个问题,我需要检查某个数组是否是更大数组的一部分,这会很容易,但我需要检查更大数组是否包含完全相同的序列。例如

int[] greaterArray = {8, 3, 4, 5, 9, 12, 6 ... n - elements}
int[] lesserArray = {3, 4, 5}

现在我需要知道较小的数组是否是该数组的一部分,但具有相同的序列,因此它在较大的数组中包含彼此相邻的 3、4、5。

我尝试过:

var exists = greaterArray.Intersect(lesserArray).Any();

但是如果较小数组的任何元素存在于较大数组中,它会返回信息,而不是精确的顺序。有什么想法吗?

最佳答案

    int[] greaterArray = {8, 3, 4, 5, 9, 12, 6};
    int[] lesserArray = { 3, 4, 5 };
    bool sequenceFound = false;

    for (int i = 0; i <= greaterArray.Length - lesserArray.Length; i++)
    {
        if (greaterArray.Skip(i).Take(lesserArray.Length).SequenceEqual(lesserArray))
        {
            sequenceFound = true;
            break;
        }
    }

    if (sequenceFound)
    {
        //sequence found
    }
    else
    {
        //sequence not found
    }

使用上面的代码。它从 greaterArray 中获取长度等于 lesserArray 长度的多个子序列,并将其与 lesserArray 进行匹配。

关于c# - 检查数组是否包含与其他数组完全相同的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40257621/

相关文章:

javascript - Protractor - 如何将一组 promise 的结果放入另一个数组

c# - 替换矩阵 C# 中的值

c# - C#泛型类型中静态字段的初始化

C# 原子性 : assignment of int vs. long 在 x64 平台上

javascript - 如何迭代对象文字数组以查找匹配的属性?

javascript - 使用 Google Assistant 从 Firebase 返回数据数组

Javascript Push() 替换元素而不是追加

javascript - 将 View Web 表单 View 引擎格式中的字符串数组转换为 javaScript 对象

c# - Entity Framework 代码优先 : map list of ids to entity using reference table

c# - MYSQL "use"查询在应用程序中选择数据库