2011-10-05 126 views
3

可能重複:
Find common prefix of stringsC#或JavaScript:確定共同的前綴字符串中

比方說,我有一個字符串數組。數組至少有兩個元素,可能還有更多。數組中的每個字符串至少有兩個字符,可能還有更多,並且每個字符串的第一個字符至少是相同的。

鑑於上述字符串數組,確定跨所有字符串共享的最長前綴的最有效方法是什麼?

例如,給定['cowgirl', 'cowboy'],通用前綴是cow。或者,給定['a', 'abs', apples'],通用前綴是a

回答

4

我認爲最簡單的算法,也許是最有效的,是剛剛檢查序列的話,迄今爲止比較最長的共同前綴每個字,以確定有多少它可以保持。使用第一個字符串作爲初始前綴。

編輯:下面是一些JavaScript代碼,做的工作:

function findLongestPrefix(list) { 
    var prefix = list[0]; 
    var prefixLen = prefix.length; 
    for (var i = 1; i < list.length && prefixLen > 0; i++) { 
     var word = list[i]; 
     // The next line assumes 1st char of word and prefix always match. 
     // Initialize matchLen to -1 to test entire word. 
     var matchLen = 0; 
     var maxMatchLen = Math.min(word.length, prefixLen); 
     while (++matchLen < maxMatchLen) { 
      if (word.charAt(matchLen) != prefix.charAt(matchLen)) { 
       break; 
      } 
     } 
     prefixLen = matchLen; 
    } 
    return prefix.substring(0, prefixLen); 
} 
+1

Upvoted。您可以通過存儲前綴長度來消除循環中的substring()調用。 – Fantius

+0

好點。我會修改代碼。 –

+0

即使在修復語法錯誤之後,此代碼也不起作用 –