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/ 谢谢!

最新文章

  1. 2000条你应知的WPF小姿势 基础篇&lt;40-44 启动关闭,Xaml,逻辑树&gt;
  2. 《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器
  3. linux的mount(挂载)命令
  4. css盒子模型 padding
  5. 移动端自动化环境搭建-JDK的安装
  6. 关​于​h​i​b​e​r​n​a​t​e​中​双​向​外​键​关​联​o​n​e​-​t​o​-​o​n​e​的​p​r​o​p​e​r​t​y​-​r​e​f​=​的​问​题(转)
  7. C语言中 指针、引用和取值
  8. iOS-实现映客首页TabBar和滑动隐藏NavBar和TabBar
  9. SnappyDB—Android上的NoSQL数据库简介
  10. Redis系统学习 五、管理
  11. shell 脚本中for循环
  12. 人脸检测(1)——HOG特征
  13. [转]使用@Test 也可以从spring容器中获取依赖注入
  14. 有关Java内存溢出及内存消耗的小知识
  15. B. Light It Up
  16. Bitcoin源代码编译安装详解
  17. UVA 11168 Airport(凸包)
  18. 记一次TCP重发接口调用的问题
  19. Java SSM框架之MyBatis3(一)MyBatis入门
  20. java中static,final,private方法的继承多态问题

热门文章

  1. day9-IO心得
  2. myBaits association的使用
  3. Django xadmin的使用 (一)
  4. IOS 阻止 锁屏
  5. 跟着太白老师学python day11 可迭代对象和迭代器
  6. &lt;转&gt;Linux环境进程间通信(五): 共享内存(下)
  7. SynchronizationContext
  8. Java的SSH网站
  9. EF CodeFirst简单实例
  10. linux shell 脚本攻略学习 -- head命令详解, tail命令详解