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 相关文章推荐
解读Python中degrees()方法的使用
May 18 Python
Python smallseg分词用法实例分析
May 28 Python
Python生成器以及应用实例解析
Feb 08 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
python 函数的缺省参数使用注意事项分析
Sep 17 Python
python实现机器人卡牌
Oct 06 Python
如何提高python 中for循环的效率
Apr 15 Python
python Tornado框架的使用示例
Oct 19 Python
golang中的空接口使用详解
Mar 30 Python
Golang Web 框架Iris安装部署
Aug 14 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
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
浅谈php7的重大新特性
2015/10/23 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
js编写选项卡效果
2017/05/23 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
Python 控制终端输出文字的实例
2019/07/12 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
开学季活动策划方案
2014/02/28 职场文书
企业文化标语大全
2014/06/10 职场文书
社保转移委托书范本
2014/10/08 职场文书
入股合作协议书
2014/10/12 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫