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 相关文章推荐
Pyramid添加Middleware的方法实例
Nov 27 Python
实例讲解Python中的私有属性
Aug 21 Python
python使用Image处理图片常用技巧分析
Jun 01 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
简单了解Python生成器是什么
Jul 02 Python
python超时重新请求解决方案
Oct 21 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
python3 字符串知识点学习笔记
Feb 08 Python
Python实现对adb命令封装
Mar 06 Python
jupyter lab文件导出/下载方式
Apr 22 Python
python 模拟在天空中放风筝的示例代码
Apr 21 Python
给numpy.array增加维度的超简单方法
Jun 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数据采集的详解
2013/06/02 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
cakephp常见知识点汇总
2017/02/24 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
React快速入门教程
2017/01/17 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
python在指定目录下查找gif文件的方法
2015/05/04 Python
详解Django中的过滤器
2015/07/16 Python
python中logging包的使用总结
2018/02/28 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
django页面跳转问题及注意事项
2019/07/18 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
django中cookiecutter的使用教程
2020/12/03 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
创业培训计划书
2014/05/03 职场文书
护士辞职信怎么写
2015/02/27 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
教师节班会主持词
2015/07/06 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电