zoukankan      html  css  js  c++  java
  • 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];
    }
    
  • 相关阅读:
    020-请你说一说app测试的工具
    栈的压入、弹出序列
    包含min函数的栈
    顺时针打印矩阵
    二叉树的镜像
    树的子结构
    链表中倒数第k个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    矩形覆盖
  • 原文地址:https://www.cnblogs.com/cwhan/p/14791298.html
Copyright © 2011-2022 走看看