14最长公共前缀

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

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

示例 1:

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

示例 2:

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

说明:

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

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

Solution 1

纵向遍历
时间复杂度:O(mn)
空间复杂度:O(1)
执行用时:0 ms
内存消耗:5.6 MB

char *longestCommonPrefix(char **strs, int strsSize)
{
    if (strsSize == 0)
        return calloc(sizeof(char), sizeof(char));
    int prefix_len = 0;
    int i = 0;
    while (1)
    {
        if (strs[0][prefix_len] == '\0')
            goto END_LOOP;
        for (i = 1; i < strsSize; i++)
        {
            if (strs[i][prefix_len] == '\0' ||
                strs[i][prefix_len] != strs[0][prefix_len])
                goto END_LOOP;
        }
        prefix_len++;
    }
END_LOOP:
    strs[0][prefix_len] = '\0';
    return *strs;
}