【发布时间】:2019-08-04 14:54:08
【问题描述】:
我试图在数组中查找子数组。它只适用于一个子数组,但我希望如果有多个子数组,它会返回最后一个的索引。例如,对于 [3,4,1,2,0,1,2,5,6] 和 [1,2] 应该返回 5。
public int FindArray(int[] array, int[] subArray)
{
//throw new NotImplementedException();
int y=0;
int index=0;
bool find= false;
for(int x=0;x< array.Length && y< subArray.Length;)
{
if(array[x]!= subArray[y])
{
if(find==true)
{
y=0;
index=x;
}
else
{
x++;
y=0;
index=x;
}
}
else
{
find=true;
x++;
y++;
}
}
if(y==subArray.Length)
return index;
else
return -1;
}
}
【问题讨论】:
-
从数组末尾开始搜索,例如
for (int x = array.Length - 1; x >= 0 ...) -
我尝试过(并写了 x-- 而不是 x++),但随后它在 if(find==true) 处进入无限循环,因为它永远不会减少 x。但是之前没有 x++ 也可以工作。