这个问题仅仅是关于算法的。在伪代码中是这样的:
A = Array of strings; //let's say count(A) = N
S = String to find; //let's say length(S) = M
for (Index=0; Index<count(A); Index++)
if (A[Index]==S) {
print "First occurrence at index\x20"+Index;
break;
}
这个 for 循环需要字符串比较 N 次(或字节比较 N*M 次,O(N*M))。当数组 A 有很多项或字符串 S 太长时,这很糟糕。
找出第一次出现的更好方法吗?O(K*logK) 时的某些算法是可以的,但在 O(K) 时更可取,或者在 O(logK) 时最好,其中 K 是 N 或 M。
我不介意在比较循环之前添加一些其他结构或进行一些数据处理。