這個問題只是關於算法。 在僞碼是這樣的:找到字符串數組中的字符串的最快算法?
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;
}
這對於迴路需要字符串比較N次(或字節比較N * M次,O(N * M))。當數組A有很多項目,或者當字符串S太長時,這是不好的。
任何找到第一個出現的更好方法? O(K * logK)上的一些算法是可以的,但是在O(K)或O(logK)時最好,其中K是N或M.
我不介意在某些其他結構中添加或在比較循環之前做一些數據處理。
「當字符串S太長時」是不相關的,除非'A中有很多字符串'具有相同的長度和相同的長前綴。 (如果長度不同,則字符串相等性檢查可以立即終止,或者一旦發現不匹配,就立即終止。) – Dougal 2012-04-28 18:43:58
爲什麼使用'\ x20'而不是空格?我很好奇:-) – 2012-04-28 18:46:01
哦,是的,比較時間更多地取決於陣列中的字符串的長度A – jondinham 2012-04-28 18:46:24