我寫這個算法來檢查一個字符串是否是數組中另一個字符串的前綴。 複雜度爲O(n *(n-1)* k),其中n是數組中字符串的數量, ,K是字符串的最大長度。我在這裏進行復雜性分析嗎?該算法的時間複雜度查找前綴
public static void isPrefix(String[] strs){
for(int i=0; i<strs.length; i++){
for(int j=i+1; j<strs.length; j++){
String a = strs[i];
String b = strs[j];
if(!commonStr(a,b).isEmpty()){
System.out.println(a + "->" + b);
}
}
}
}
private static String commonStr(String a, String b){
int smaller = Math.min(a.length(), b.length());
for(int k=0; k<smaller; k++){
if(a.charAt(k) != b.charAt(k)){
return "";
}
}
return a.substring(0,smaller);
}
public static void main(String[] args){
String[] strs = {"ab", "abc", "cde", "abef"};
isPrefix(strs);
}
可能是一個愚蠢的問題(完全脫離主題),但爲什麼不使用startsWith? – MrP
如果您添加或刪除數組中的單詞並希望檢查前綴大量時間,可能應考慮使用另一個數據結構,例如Trie:http://en.wikipedia.org/wiki/Trie – Traklon
是的,嘗試比較好,但是對於BigO分析而言,只有 – user697911