leetcode-最长公共前缀

最长公共前缀

题目描述

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。

题目分析

题目要找出最长的公共前缀,最先想到的应该是纵向扫描,该方法的思路是比较每一列的字符是否相同,相同则比较下一列,直到这列的字符不同为止。最后返回最长的前缀。

时间复杂度

  • 时间复杂度:O(mn),其中 m 是字符串数组中的字符串的平均长度,n 是字符串的数量。最坏情况下,字符串数组中的每个字符串的每个字符都会被比较一次。
  • 空间复杂度:O(1)。使用的额外空间复杂度为常数。

算法部分代码展示

char * longestCommonPrefix(char ** strs, int strsSize)
{
   if(strsSize == 0) return "";
   //以第一个元素的列作为外循环
   for(int i = 0; i < strlen(strs[0]); i++ ){
       //比较每一行上该列的字符是否相等,不相等则返回之前保存的值
       for(int j = 1; j < strsSize; j++ ){
           if(strs[0][i] != strs[j][i]){
               strs[0][i] = '';
               return strs[0];
           }
       }
   }
   return strs[0];
}
原文地址:https://www.cnblogs.com/cwhan/p/14791298.html