之前刷了這個,不過忘了當初怎麼寫的了,找了javascript的算法javascript
var longestCommonPrefix = function (strs) {java
if (strs.length == 0) return "";算法
var res = strs[0];數組
for (var i = 0 ; i < strs.length; i++) {ip
while (strs[i].indexOf(res) != 0) {string
res = res.substring(0, res.length - 1);io
if (res.isnull) return "";function
}變量
}遍歷
return res;
};
java的同樣就是換了語言,基本同樣
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0) return "";
String com = strs[0];
for(int i = 0;i < strs.length;i++){
while(strs[i].indexOf(com) != 0){
com = com.substring(0,com.length() - 1);
if(com.equals("")) return "";
}
}
return com;
}
}
總結:
1.默認數組第一個就是最長前綴,com變量賦值,遍歷strs數組。
2.若是不包括,就把com長度減1,知道等於0或者「」
3.當時我沒有想明白一個問題,當strs = {"leet","sleet","leets"}時,這個程序會返回「」,可是公共前綴應該是leet啊,想着想着,這個有個「前「字,從開頭開始算,而後算法就容易理解了。