leetcode 最长公共前缀 Js解法

题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例一:

输入: [“flower”,“flow”,“flight”]
输出: “fl”

示例二:

输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。

算法思路:

  1. 判断字符串是否为空,若为空,则输出""
  2. 数组的第一个字符串当做参照,将后面的每一个与第一个作比较
  3. 用两层循环来控制,第一层是第一个字符串的长度,因为最长的字符串也不会大于第一个字符串的长度,第二层内层循环是每一位的比较,用第一个字符串的每一位与后面每一个字符后的相应位做比较。
  4. 如果相同,则记录下这个字符继续循环,如果不同,则跳出循环,返回result。

具体代码:

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    var f = strs[0];
    var result = '';
    if(strs.length == 0){
        return result;
    }
    for(var i = 0 ;i < f.length ;i++){
        for(var j = 1 ; j < strs.length ; j++){
            if(f[i] != strs[j][i]){
                return result;
            }
           
        }
         result+=f[i];
    }
    return result;
};

结果:
在这里插入图片描述
在这里插入图片描述
C语言解法:


char* longestCommonPrefix(char** strs, int strSize){

    char *str = strs[0];//利用第一个来判断

    int i,j;

    if(strSize == 0) return "";

    for(i = 1; i<strSize;i++){

        j = 0;

        while(str[j]&&strs[i][j]&&str[j]==strs[i][j])j++;//避免数组溢出并判断下一个元素是否相同

        str[j] ='\0';//字符串结束符只输出前面对应相同的

    }

    return str;

}

发布了57 篇原创文章 · 获赞 22 · 访问量 7282

猜你喜欢

转载自blog.csdn.net/qq_39897978/article/details/98759666
今日推荐