gpt4 book ai didi

c# - 在 C# 中查找子数组的第一次出现/起始索引

转载 作者:太空狗 更新时间:2023-10-29 22:07:44 24 4
gpt4 key购买 nike

给定两个数组作为参数(x 和 y)并找到 y 在 x 中第一次出现的起始索引。我想知道最简单或最快的实现方式是什么。

例子:

when x = {1,2,4,2,3,4,5,6}
y = {2,3}
result
starting index should be 3

更新:由于我的代码有误,我将其从问题中删除。

最佳答案

最简单的写法?

    return (from i in Enumerable.Range(0, 1 + x.Length - y.Length)
where x.Skip(i).Take(y.Length).SequenceEqual(y)
select (int?)i).FirstOrDefault().GetValueOrDefault(-1);

效率不高,当然...有点像:

private static bool IsSubArrayEqual(int[] x, int[] y, int start) {
for (int i = 0; i < y.Length; i++) {
if (x[start++] != y[i]) return false;
}
return true;
}
public static int StartingIndex(this int[] x, int[] y) {
int max = 1 + x.Length - y.Length;
for(int i = 0 ; i < max ; i++) {
if(IsSubArrayEqual(x,y,i)) return i;
}
return -1;
}

关于c# - 在 C# 中查找子数组的第一次出现/起始索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780423/

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