题目链接

Write a function to find the longest common prefix string amongst an array of strings.


题目的意思说的不是很清楚,开始理解成了求任意两个字符串的前缀中的最长者。但是本题的意思是求所有字符串的最长公共前缀,即数组的所有字符串都包含这个前缀。

算法1:逐个字符比较,时间复杂度为O(N*L),N是字符串个数,L是最长前缀的长度

class Solution {
public:string longestCommonPrefix(vector<string> &strs) {int n = strs.size();string res;if(n == 0)return res;for(int pos = 0; pos < strs[0].size(); pos++)//最长前缀的长度不超过strs[0].size(),逐个字符的比较{for(int k = 1; k < n; k++)//strs[0]的第pos个字符分别和strs[1...n-1]的第pos个字符比较{if(strs[k].size() == pos || strs[k][pos] != strs[0][pos])return res;}res.push_back(strs[0][pos]);}return res;}
};

============================

算法2:第0个字符串和其他字符串逐个求前缀 ,所有字符串的最长前缀长度 = min{ prefixLength(strs[0], strs[i]) ,  0 < i < n }     本文地址

class Solution {
public:string longestCommonPrefix(vector<string> &strs) {int n = strs.size();if(n == 0)return "";int len = strs[0].size();//最长前缀的长度for(int i = 1; i < n; i++){int k;for(k = 0; k < min(len, (int)strs[i].size()); k++)if(strs[0][k] != strs[i][k])break;if(len > k)len = k;}return strs[0].substr(0, len);}
};

算法2的时间复杂度是O(N*M),N是字符串个数,M = strs[0]和其他字符串的前缀长度的平均值, 算法2中字符的比较次数要比算法1多。例如以下例子

strs[0]: abcdef

strs[1: abcde

strs[2: abcdk

strs[3]ab

按照算法1,只需要比较每个字符串的前3个字符;按照算法2,strs[0]和其他三个字符串分表需要比较6、5、3个字符

【版权声明】转载请注明出处:http://www.cnblogs.com/TenosDoIt/p/3856331.html

转载于:https://www.cnblogs.com/TenosDoIt/p/3856331.html

LeetCode:Longest Common Prefix相关推荐

  1. LeetCode Longest Common Prefix

    原题链接在这里:https://leetcode.com/problems/longest-common-prefix/ 题目: Write a function to find the longes ...

  2. LeetCode - Longest Common Prefix

    题目: Write a function to find the longest common prefix string amongst an array of strings. 思路: 以第一个字 ...

  3. LeetCode: Longest Common Prefix

    string.erase没掌握好,悲了个剧,2次过 1 class Solution { 2 public: 3 string longestCommonPrefix(vector<string ...

  4. [leetcode] Longest Common Prefix 字符窜最长公共前缀判断

    题目:略 char* longestCommonPrefix(char** strs, int strsSize) {int i = 0, j = 0;int sum = 0;char *buf = ...

  5. LeetCode 14. Longest Common Prefix字典树 trie树 学习之 公共前缀字符串

    所有字符串的公共前缀最长字符串 特点:(1)公共所有字符串前缀 (好像跟没说一样...) (2)在字典树中特点:任意从根节点触发遇见第一个分支为止的字符集合即为目标串 参考问题:https://lee ...

  6. LeetCode之Longest Common Prefix

    1.题目 Write a function to find the longest common prefix string amongst an array of strings 2.代码实现 pa ...

  7. LeetCode - Easy - 14. Longest Common Prefix

    Topic String Description https://leetcode.com/problems/longest-common-prefix/ Write a function to fi ...

  8. LeetCode算法入门- Longest Common Prefix -day13

    LeetCode算法入门- Longest Common Prefix -day13 题目描述: Write a function to find the longest common prefix ...

  9. leetcode python3 简单题14. Longest Common Prefix

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第十四题 (1)题目 英文: Write a function to find th ...

最新文章

  1. HDU1089-1096 A+B for Input-Output Practice 系列问题(输入输出格式练习)
  2. APP自动化测试过程概述
  3. 2021第12届蓝桥杯省赛 -- 填空题:试题B:直线
  4. 指导你成为C++编程高手的魔幻之书——写给大家看的C++书
  5. Debian | 软件安装升级点滴记录
  6. WPF特效-实现弧形旋转轮播图
  7. 【转】datagridview的checkbox列,当修改checkbox状态时实时获得其准确状态值
  8. Effective C++ 条款11:在operator=中处理自我赋值
  9. http 请求头和响应头
  10. Python机器学习:线型回归法01简单线型回归法
  11. Catfishcms v4.8.54环境搭建
  12. Linux入门及进阶学习推荐书籍
  13. 【typecho插件】typecho邮箱插件LoveXiaozhou是一款Typecho邮件通知类插件、小周
  14. MATLAB--数字图像处理 图像平移
  15. 读书笔记《深度学习与图像识别原理与实践 大白话讲解对小白易懂》2022-8-5
  16. 我是太阳因为自信才会把你照亮—2015许小乖的IT之路
  17. ocaml_管理OCaml软件包的好工具
  18. <<视觉问答>>2021:Check It Again: Progressive Visual Question Answering via Visual Entailment
  19. 【LeetCode】64. 最小路径和 结题报告 (C++)
  20. 13.第十四章.文档和配置管理

热门文章

  1. JAVA对接微信支付和支付宝支付(APP端支付)
  2. 第2章-7 产生每位数字相同的n位数
  3. chown:修改用户的所属用户和所属组方法
  4. Stackelberg博弈问题双层模型转化为MPEC模型的三种方法
  5. Jmeter-测试脚本学习(登录脚本)
  6. 利用str.padStart获取格式化日期
  7. 课程助理For Windows(预览版,正方教务系统学生查分工具)
  8. LaTeX技巧218:LaTeX如何正确输入引号:双引号“”单引号‘’
  9. latex打双引号“ “
  10. 《高效学习OpenGL》之模型变换 glTranslatef(), glRotatef(),glScalef()