最长公共前缀

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 
       
    
};

 

posted @ 2019-06-11 11:15  link_xjxj  阅读(234)  评论(1编辑  收藏  举报