gpt4 book ai didi

c# - 从数组中删除精确的子数组值

转载 作者:太空宇宙 更新时间:2023-11-03 23:08:35 24 4
gpt4 key购买 nike

我在处理数组时遇到问题,主要是我正在寻找一种方法来从数组中删除子数组,但具有精确的顺序。例如:

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

结果是:

int[] resultArray = {8, 9, 12, 6, 3, 5}

因此,如您所见,它只会删除 {3, 4, 5} 作为序列而不是单独的值,值 3、5 保留在更大的数组中。

我已经通过字符串转换和切割子字符串完成了它,但可能有更简单、更优雅的方法。

最佳答案

private static int[] RemoveSubArray()
{
int[] greaterArray = {8, 3, 4, 5, 9, 12, 6, 3, 5, 3, 4, 5};
int[] lesserArray = {3,4,5};
if (lesserArray == null || lesserArray.Length == 0)
{
return greaterArray;
}
int[] allIndex = greaterArray.Select((b,i) => b == lesserArray[0] ? i : -1).Where(i => i != -1).ToArray();

for (int index = 0; index < allIndex.Length; index++)
{
int count = 0;
for (int x = 1; x < allIndex.Length; x++)
{
if (greaterArray[allIndex[index] + x] == lesserArray[x])
{
count++;
}
}
if (count == allIndex.Length - 1)
{
for (int inner = 0; inner < allIndex.Length; inner++)
{
greaterArray[allIndex[index] + inner] = 0;
}
}

}

return greaterArray = greaterArray.Where(i => i != 0).ToArray();
}

首先存储 greaterArray 具有 lesserArray 的第一个元素的所有 inexes。然后检查 next 和 next to next 直到 allIndex 的长度。如果所有这些值依次等于 lesserArray 值,那么我们会将 greaterArray 中这些索引的值设置为 0。最后,我们将从 greaterArray 中删除所有 0。

关于c# - 从数组中删除精确的子数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40281819/

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