之前刷了这个,不过忘了当初怎么写的了,找了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啊,想着想着,这个有个“前“字,从开头开始算,而后算法就容易理解了。