編寫一個函數,查找字符串數組中的最長公共前綴。若不存在公共前綴,返回空字符串 ""。
將數組第一個字符串作為初始公共前綴 prefix,依次與後續字符串比較,取兩者的公共部分更新 prefix。若某次比較後 prefix 為空,直接返回。
""。prefix = strs[0]。i = 1 ~ n-1:j 同時遍歷 strs[i] 與 prefix,統計相同字符長度。j == 0 則無公共前綴,返回 ""。prefix = prefix.substring(0, j)。prefix。public class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
String prefix = strs[0];
for (int i = 1; i < strs.length; i++) {
int j = 0;
while (j < strs[i].length()
&& j < prefix.length()
&& strs[i].charAt(j) == prefix.charAt(j)) {
j++;
}
if (j == 0) {
return "";
}
prefix = prefix.substring(0, j);
}
return prefix;
}
}
此外還有縱向掃描、分治法、二分查找法、字典樹等多種解法,各有優劣。橫向掃描代碼簡潔,工程實踐中常用。