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

题解: 寻找一组字符串的最长公共前缀。 

最简单的方法,用一个字符串记录当前最长的公共前缀,然后依次比较。时间复杂度: O(N).

 class Solution {
public:
string getPrefix(string a,string b) // 辅助函数用于获取两个字符串的公共前缀
{
string ans;
for(int i=;i<a.size() && i<b.size();i++)
{
if(a[i]==b[i]) ans+=a[i];
else break;
}
return ans;
}
string longestCommonPrefix(vector<string> &strs) {
string a;
int len = strs.size();
if(!len) return a;
a = strs[];
for(int i=;i<len;i++) a= getPrefix(a,strs[i]);
return a;
}
};

高效的方法,采用分治法,先分块,后合并比较,时间复杂度O(logN)。

 class Solution {
public:
string getPrefix(string a,string b) //辅助函数,用于获取两个字符串的公共前缀
{
string ans;
for(int i=;i<a.size() && i<b.size();i++)
{
if(a[i]==b[i]) ans+=a[i];
else break;
}
return ans;
}
string commonPrefix(int left,int right, vector<string> &strs) //分治法寻找commonPrefix
{
if(left>=right) return strs[left];
if(left+==right) return getPrefix(strs[left],strs[right]);
int middle = (right+left)>>;
return getPrefix(commonPrefix(left,middle,strs),commonPrefix(middle+,right,strs));
}
string longestCommonPrefix(vector<string> &strs) {
int i=,len=strs.size();
string a;
if(!len) return a;
return commonPrefix(,len-,strs);
}
};

转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!

[LeetCode 题解]: Longest Common Prefix的更多相关文章

  1. leetcode 题解 || Longest Common Prefix 问题

    problem: Write a function to find the longest common prefix string amongst an array of strings. 寻找 0 ...

  2. LeetCode题解——Longest Common Prefix

    题目: 给定一系列的字符串,找出这些字符串的最长公共前缀. 解法: 暴力法,依次比较每个字符串的每个字符,碰到第一个不同的就返回之前找到的前缀. 代码: class Solution { public ...

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

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

  4. [LeetCode] 14. Longest Common Prefix 最长共同前缀

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

  5. 【leetcode】Longest Common Prefix

    题目简述: Write a function to find the longest common prefix string amongst an array of strings. 解题思路: c ...

  6. [LeetCode] 14. Longest Common Prefix

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

  7. 【JAVA、C++】LeetCode 014 Longest Common Prefix

    Write a function to find the longest common prefix string amongst an array of strings. 解题思路: 老实遍历即可, ...

  8. 【leetcode】Longest Common Prefix (easy)

    Write a function to find the longest common prefix string amongst an array of strings. 思路:找最长公共前缀 常规 ...

  9. Java [leetcode 14] Longest Common Prefix

    小二好久没有更新博客了,真是罪过,最近在看linux的东西导致进度耽搁了,所以今晚睡觉前怒刷一题! 问题描述: Write a function to find the longest common ...

随机推荐

  1. django之部署

    布署 从uwsgi.nginx.静态文件三个方面处理 服务器介绍 服务器:私有服务器.公有服务器 私有服务器:公司自己购买.自己维护,只布署自己的应用,可供公司内部或外网访问 公有服务器:集成好运营环 ...

  2. 函数~匿名方法~lambda的逐渐过渡思想

    前提:基于委托实现 (1)使用函数名称 delegate void Printer(string s);//(1)申明委托 static void Main(string[] args) { //(3 ...

  3. mongodb(三)

    索引详讲索引管理空间索引 for(var i = 0 ; i<200000 ;i++){ db.books.insert({number:i,name:i+"book"}) ...

  4. ojective-c convert to pascal pattern

    ojective-c convert to pascal pattern http://www.cnblogs.com/cnsoft/archive/2013/06/09/3128619.html C ...

  5. UML建模之时序图(Sequence Diagram)<转>

    UML建模之时序图(Sequence Diagram)   一.时序图简介(Brief introduction) 二.时序图元素(Sequence Diagram Elements) 角色(Acto ...

  6. (一)Spring’s MVC Architecture

    Spring’s MVC module Spring’s MVC module is based on front controller design pattern followed by MVC ...

  7. eureka快速剔除失效服务

    eureka服务端配置 #eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap,这个时间决定了多久会把readWriteCacheMap的缓 ...

  8. VS2017更新后 在WIN7上找不到 stdio.h等的问题

    项目->属性->配置属性->常规->windows SDK版本.将其换成你现在的版本即可解决问题,如果不行就重新下个最新版SDK,如WIN10的.

  9. python 文件的读取&更新

    [python 文件的读取&更新] 任务抽象: 读取一个文件, 更新内容后, 重新写入文件. 实际应用: 磁盘上的一个配置文件, 读入内存后为一个dict, 对dict更新后重新写入磁盘. d ...

  10. NSArray 快速求和、平均值、最大值、最小值

    在iOS开发中我们经常遇到一个需求,求一个数组的所有元素的和,最大值,最小值或者平均值,有的开发者可能第一想到的是for循环遍历求解,其实苹果提供了更简便的方式.如下: NSArray *arr = ...