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提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
python递归删除指定目录及其所有内容的方法
Jan 13 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
python实现在IDLE中输入多行的方法
Apr 19 Python
python random从集合中随机选择元素的方法
Jan 23 Python
Python爬虫学习之翻译小程序
Jul 30 Python
python中的列表与元组的使用
Aug 08 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
django haystack实现全文检索的示例代码
Jun 24 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 23 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 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
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP strripos函数用法总结
2019/02/11 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
Prototype Hash对象 学习
2009/07/19 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
js实现旋转木马效果
2017/03/17 Javascript
axios基本入门用法教程
2017/03/25 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
Vue组件通信的四种方式汇总
2018/02/08 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
python实现两个文件合并功能
2018/04/01 Python
详解Python用户登录接口的方法
2019/04/17 Python
解决python 上传图片限制格式问题
2019/10/30 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
法律专业推荐信范文
2013/11/29 职场文书
投标单位介绍信
2014/01/09 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
法制宣传标语
2014/06/23 职场文书
出国签证在职证明
2014/09/20 职场文书
Hive HQL支持2种查询语句风格
2022/06/25 数据库