最長公共字首

2021-10-08 23:39:20 字數 2388 閱讀 5105

編寫乙個函式來查詢字串陣列中的最長公共字首。

如果不存在公共字首,返回空字串 「」。

示例 1

:輸入:

["flower"

,"flow"

,"flight"

]輸出:

"fl"

示例 2

:輸入:

["dog"

,"racecar"

,"car"

]輸出:

""

解釋: 輸入不存在公共字首。

方法1:橫向掃瞄

class

solution

string prefix = strs[0]

;int count = strs.length;

for(

int i =

1; i < count; i++)}

return prefix;

}public string longestcommonprefix

(string str1, string str2)

return str1.

substring(0

, index);}

}

時間複雜度:o

(mn),其中 m是字串陣列中的字串的平均長度,n 是字串的數量。最壞情況下,字串陣列中的每個字串的每個字元都會被比較一次。

空間複雜度:o(1

)。使用的額外空間複雜度為常數。

方法2:縱向掃瞄

class

solution

int length = strs[0]

.length()

;int count = strs.length;

for(

int i =

0; i < length; i++)}

}return strs[0]

;}}

時間複雜度:o

(mn),其中 m 是字串陣列中的字串的平均長度,n 是字串的數量。最壞情況下,字串陣列中的每個字串的每個字元都會被比較一次。

空間複雜度:o(1

)。使用的額外空間複雜度為常數。

方法3:分治

class

solution

else

}public string longestcommonprefix

(string[

] strs,

int start,

int end)

else

}public string commonprefix

(string lcpleft, string lcpright)

}return lcpleft.

substring(0

, minlength);}

}

時間複雜度:o

(mn),其中 m 是字串陣列中的字串的平均長度,n 是字串的數量。時間複雜度的遞推式是 t

(n)=

2⋅t(n/2)

+o(m),通過計算可得t

(n)=

o(mn)。

空間複雜度:o

(mlogn),其中 m 是字串陣列中的字串的平均長度,n 是字串的數量。空間複雜度主要取決於遞迴呼叫的層數,層數最大為 logn,每層需要 m 的空間儲存返回結果。

方法4:二分查詢

class

solution

int minlength = integer.max_value;

for(string str : strs)

int low =

0, high = minlength;

while

(low < high)

else

}return strs[0]

.substring(0

, low);}

public

boolean

iscommonprefix

(string[

] strs,

int length)}}

return

true;}

}

時間複雜度:o

(mnlogm),其中 m 是字串陣列中的字串的最小長度,n 是字串的數量。二分查詢的迭代執行次數是o

(logm),每次迭代最多需要比較 mn 個字元,因此總時間複雜度是 o

(mnlogm)。

空間複雜度:o(1

)。使用的額外空間複雜度為常數。

最長公共字首

描述 給k個字串,求出他們的最長公共字首 lcp 樣例 在 abcd abef 和 acef 中,lcp 為 a 在 abcdefg abcefg abcefa 中,lcp 為 abc 新知識點 vectorstrs既可以是一維的,也可以是多維的。在這裡講解三維的初始化。vector str str...

最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。class solution object...

最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。param strs return var...