14. 最长公共前缀

题目描述: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。
示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。

求最长公共前缀,可以用第一个字符串做“哨兵”,从前到后对比每个字符串的前缀,每次截取比较出来的最大公共前缀,再和后面的字符串做比较,比较到最后一个字符串就是所求。

//C语言

char * longestCommonPrefix(char ** strs, int strsSize){
    if(strsSize == 0) return "";

    char *str = strs[0];
    int i, j;
    for(i = 1; i < strsSize; i++){
        j = 0;
        //注意while的判断条件
        while(str[j] && strs[i][j] && str[j] == strs[i][j]) j++;
        str[j] = '\0';
    }
    return str;
}


//JS
/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    let len = strs.length;
    if(len == 0) return "";

    let flagStr = strs[0];
    for(let i = 1; i < len; i++){
        let j = 0;
        while(flagStr[j] && strs[i][j] && flagStr[j] == strs[i][j]) j++;
        flagStr = flagStr.slice(0, j);
    }
    return flagStr;
};

  

 

posted @ 2020-05-26 18:43  Jessey45  阅读(227)  评论(0编辑  收藏  举报