一般求公共前缀可以用trie树解决。
但是如果是朴素trie树,则会消耗大量空间,
如果是double-array-trie,则编码相当复杂。
所以这里就不用trie树,直接用遍历的方式解决。
当然还可以用递归等其他方式。
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs.length==0){
return '';
}
//上面保证了至少有一个字符串
let i=0;
let prefix = [];
while(true){
if(i>=strs[0].length){
return prefix.join('');
}
//上面保证了第一个字符串的字符还没消耗完
let c = strs[0][i];
for(let j=1;j<strs.length;j++){
if(i<strs[j].length){
if(c!=strs[j][i]){
return prefix.join('');
}
}else{
return prefix.join('');
}
}
prefix.push(c);
i++;
}
return prefix.join('');
};