Python求一批字符串的最长公共前缀算法示例


Posted in Python onMarch 02, 2019

本文实例讲述了Python求一批字符串的最长公共前缀算法。分享给大家供大家参考,具体如下:

Python求一批字符串的最长公共前缀算法示例

思路一:这个题一拿到手,第一反应就是以第一个字符串strs[0]为标准,如果其他字符串的第一个字符和str[0]的第一个字符串相同,则再比较第二个字符串,以此类推直到出现不同为止。

def longestCommonPrefix(self, strs):
    """
    :type strs: List[str]
    :rtype: str
    """
    if not strs:
      return ""
    first_str = strs[0]
    other_strs = strs[1:]
    prefix = ""
    for i in first_str:
      prefix += i
      for s in other_strs:
        if not s.startswith(prefix):
          return prefix[:-1]
    return prefix

思路二:第二种方法,就是先比较前两个字符串,求出他们的最长公共前缀,再用这个前缀去跟第三个字符串比较求出新的公共前缀,以此类推

class Solution(object):
  def longestCommonPrefix(self, strs):
    """
    :type strs: List[str]
    :rtype: str
    """
    if not strs:
       return ""
    if len(strs) == 1:
      return strs[0]
    prefix = strs[0]
    for i in range(len(strs)-1):
      if not prefix:
        return ""
      prefix = self.getCommonPrefix(prefix,strs[i+1])
    return prefix
  #先定义一个函数求出两个字符串的最长公共前缀
  def getCommonPrefix(self,str1,str2):
    if not str1 or not str2:
      return ""
    prefix = ""
    for s in str1:
      prefix += s
      if not str2.startswith(prefix):
        return prefix[:-1]
    return prefix

不过测试了一下,第一种方法还要快一点。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python3写入文件常用方法实例分析
May 22 Python
Python入门之三角函数全解【收藏】
Nov 08 Python
python实现随机梯度下降(SGD)
Mar 24 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
python编程进阶之异常处理用法实例分析
Feb 21 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
python安装读取grib库总结(推荐)
Jun 24 Python
Python 如何实现访问者模式
Jul 28 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 07 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 #Python
python实现转圈打印矩阵
Mar 02 #Python
python实现顺时针打印矩阵
Mar 02 #Python
python实现二维数组的对角线遍历
Mar 02 #Python
python实现矩阵打印
Mar 02 #Python
python实现杨氏矩阵查找
Mar 02 #Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 #Python
You might like
如何利用http协议发布博客园博文评论
2015/08/03 PHP
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
python爬取微信公众号文章的方法
2019/02/26 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
研究生求职推荐信范文
2013/11/30 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
优秀毕业生求职信
2014/06/05 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python