【发布时间】:2016-11-28 12:55:03
【问题描述】:
请帮助我。我想通过掩码数组获取数组的一部分。 这是我的代码:
byte[] source = new byte[] {97, 98, 99, 5, 15, 66, 77, 102, 0, 102, 0, 102, 0, 102, 0, 102, 0};
byte[] mask = new byte[] { 102, 0, 102, 0, 102, 0, 102, 0 };
byte[] result = EscapeArray(0, source, mask);
private byte[] EscapeArray(int startIndex, byte[] source, byte[]mask)
{
???
}
EscapeArray 方法的输出将为 97、98、99、5、15、66、77。 源数组有任何值,但某处是掩码序列。 EscapeArray 返回从 startIndex 到掩码开头的部分数组。 我需要非常快速的算法,因为这种方法会经常执行。 谢谢
【问题讨论】:
-
您应该提出一个问题并提供您迄今为止所尝试的内容。
-
对不起。这个问题是:EscapeArray的实现方法是什么?
-
这里没有足够的关于数据的信息来提供“非常快”的算法。充其量可以进行具有一些优化的天真的蛮力算法。例如,如果对于大量查询,掩码或源是静态的,则可能会应用比简单的暴力破解更合适的数据结构,但这里没有关于此的信息。
-
根据您的示例以及我如何解释您的问题,为什么输出不是:“97, 98, 99, 5,15, 66, 77, 102, 0”。如果您将掩码视为“必须完全按照此顺序”,那么您的源确实包含该掩码,但其中有一个额外的“102, 0”,为什么还要将其删除?哦“startIndex to start of mask”...忽略
-
数组不是适合添加/删除的数据结构