LeetCode: 14 最长公共前缀

题目

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""

解释: 输入不存在公共前缀。
说明:

所有输入只包含小写字母 a-z 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

我的做法是最简单, 以第一个串的第一个字符开始, 依次判断每个串的第一个字符
如果通过循环, 则继续下一个
这里要注意:
一定要记得判 所给字符串是否为空

代码

char * longestCommonPrefix(char ** strs, int strsSize){
    if (strsSize == 0) return "";
    
    char *s;
    int mlen = strlen(strs[0]);
    
    for (int i = 0; i < strsSize; i++) {
        if (mlen > strlen(strs[i])) mlen = strlen(strs[i]);
    }
    
    s = (char *)malloc(sizeof(char) * (mlen+1));
    
    int top = 0;
    char c = strs[0][0];
    for (int i = 0; i < strsSize; i++) {
        if (strs[i][top] != c) {
            break;
        }
        if (top < mlen && i == strsSize-1) { //类似双层循环
            i = 0;
            s[top] = c;
            top++;
            c = strs[0][top];
        }
    }
    s[top] = '\0';
    return s;
}
上一篇:1006 最长公共子序列Lcs


下一篇:总结2(9.13-9.19)