LeetCode-Algorithms-14.最长公共前缀

1. 题目描述

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

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

示例 1:   
            输入: ["flower","flow","flight"]
            输出: "fl"
示例 2:   
            输入: ["dog","racecar","car"]
            输出: ""
解释: 输入不存在公共前缀。
说明:所有输入只包含小写字母 a-z 。

2. 提交记录

14.最长公共前缀.png

3. 算法思想

当字符串的长度 strsSize 为 0 时,返回空串;
当字符串的长度 strsSize 为 1 时,返回该字符串;
当字符串的长度 strsSize 大于1时,比较第一和第二个字符串的长度,取较小的一个作为循环次数。如果字符串char ** strs当中有空串,直接返回空串 “” 不再进行比较查找。

4. 代码实现


    char * longestCommonPrefix(char ** strs, int strsSize){
        char * str = (char *)malloc(128 * sizeof(char));  //用来存储公共前缀
        memset(str, 0, 128);
    
        if (strsSize == 0 )
        {
            return "";
        }
        strcpy(str, strs[0]);
        
        if(strsSize == 1){
            return str;
        }
           
        int len = strlen(str);      //用来计算公共前缀的长度
        
        if(len > strlen(strs[1])){
            len = strlen(strs[1]);
        }
        for (int i = 1; i < strsSize; i++)
        {
            if(strlen(strs[i]) == 0){
                return "";
            }
            char * currentStr = strs[i];
            int j;
            for (j = 0; j < len; j++)
            {
                if (str[j] != currentStr[j])
                {
                    break;
                }
            }
            len = j;
            str[j] = '\0';
        }
        return str;     
    }


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 6,502评论 1 42
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,500评论 0 5
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,426评论 0 2
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,952评论 0 38
  • 头晕眼花。满脑子只剩下一句,我只想做你的贫困户。录了一整天的表,闭上眼睛就是纵横交错的表格。眼前一片模糊。 ...
    夜里飞行的猫阅读 133评论 0 1