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中列表、字典、元组、集合数据结构整理
Nov 20 Python
详解Python验证码识别
Jan 25 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
Python rabbitMQ如何实现生产消费者模式
Aug 24 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 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
一个ftp类(ini.php)
2006/10/09 PHP
用PHP+MySql编写聊天室
2006/10/09 PHP
PHP开发中常用的8个小技巧
2008/08/27 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
javascript中的作用域scope介绍
2010/12/28 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
Node.js的特点详解
2017/02/03 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
瀑布模型都有哪些优缺点
2014/06/23 面试题
素食餐饮项目创业计划书
2014/02/02 职场文书
《草原》教学反思
2014/02/15 职场文书
施工安全标语
2014/06/07 职场文书
法制宣传标语集锦
2014/06/25 职场文书
单位租车协议书
2015/01/29 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
彻底理解golang中什么是nil
2021/04/29 Golang