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脚本帮你找出微信上删除你好友的人
Jan 07 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
python 反向输出字符串的方法
Jul 16 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
Python3数字求和的实例
Feb 19 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
Django学习笔记之为Model添加Action
Apr 30 Python
Python递归函数特点及原理解析
Mar 04 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
Python scrapy爬取小说代码案例详解
Jul 09 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 Python
python+playwright微软自动化工具的使用
Feb 02 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
php 冒泡排序 交换排序法
2011/05/10 PHP
php中++i 与 i++ 的区别
2012/08/08 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
python实现Floyd算法
2018/01/03 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
解析Python的缩进规则的使用
2019/01/16 Python
Python适配器模式代码实现解析
2019/08/02 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
.net开发工程师面试题
2014/02/25 面试题
物流仓管员工作职责
2014/01/06 职场文书
教师个人总结范文
2015/02/11 职场文书
参加招聘会后的感想
2015/08/10 职场文书
七年级数学教学反思
2016/02/17 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP
MySQL自定义函数及触发器
2022/08/05 MySQL