1.题目
2.我的解答
方法一:
思路:
1.首先判断数组内是否有内容没有直接抛出
2.设置一个变量存储要输出的的公共前缀
3.这里我是将数组第一个变量进行提取出来做为对比基准(实际应该提取数组中最短的最佳)
4.设置一个临时变量用于计算时候对比完一次,若没直接抛出
5.循环对比数组
/** * @param {string[]} strs * @return {string} */ var longestCommonPrefix = function(strs) { if(strs.length<1) return "" ; let q = ""; for(let i=0;i<strs[0].length;i++){ let tag = 1 for(let j=1;j<strs.length;j++){ if(strs[0][i] === strs[j][i]){ tag++; }else{ return q; } } if(tag == strs.length) q += strs[0][i]; } return q };
方法二:
2019/6/12补
这是对方法一的优化,在这里将舍弃一些不必要的判断和减少不必要的中间变量,以减少空间复杂度
/** * @param {string[]} strs * @return {string} */ var longestCommonPrefix = function(strs) { if(strs.length<1) return "" ; var q = ""; for(let i=0;i<strs[0].length;i++){ for(let j=1;j<strs.length;j++){ if(strs[0][i] !== strs[j][i]){ return q; } } q += strs[0][i]; } return q };