【发布时间】:2014-03-05 09:46:47
【问题描述】:
假设我有一个包含数千个项目的大字符数组:
char[] mobyDick = "..." 使得mobyDick.Length = 2000。
我想知道该数组中是否存在某个字符数组以该顺序,以及它在哪里*。 (更新:我真的只需要知道它是否在主数组中的某个索引之后。)
char[] test = {'a','b','c','d'}
我可以做类似的事情
char[] mobyDick = "..."
string mobyString = new string(mobyDick);
if (mobyString.Contains(new string(test)))
{ do stuff}
但这对于我的情况来说并不是最佳的,因为我正在尝试编写一个必须非常快速地工作的解析器,而且我不想在每个字母左右都创建和搜索字符串。
是否有某种方法(算法或通过某种 .Net 方法)来确定 mobyDick 作为 char 数组是否包含 abcd 作为 char 数组?
【问题讨论】:
-
test数组总是有 4 个项目吗? convert to string 并尝试找到 substring 解决方案时,您是否真的遇到过任何性能问题? -
测试目前可以有2-4个项目。我还没有针对完整的字符串进行测试,但我希望传递平均几千字长的字符串,所以我想尽早解决这个问题。
-
@Arcandio,你为什么有字符数组?比较的字符顺序重要吗?
-
假设你已经猜到了naive算法; cs.utexas.edu/users/moore/best-ideas/string-searching