python 实现求解字符串集的最长公共前缀方法


Posted in Python onJuly 20, 2018

问题比较简单,给定一个字符串集合求解其中最长的公共前缀即可,这样的问题有点类似于最长公共子序列的问题,但是比求解最长最长公共子序列简单很多,因为是公共前缀,这样的话只需要挨个遍历即可,只要遍历长度结束或者结束前发现有不相同的即可终止,返回不同位置之前的子序列即可,下面是具体的实现:

#!usr/bin/env python
#encoding:utf-8
 
'''
__Author__:沂水寒城
功能:求解字符串集的最长公共前缀
'''
 
def find_longest_prefix(str_list):
 '''
 求解字符串集的最长公共前缀
 '''
 str_list.sort(lambda x,y:cmp(len(x),len(y)))
 shortest_str=str_list[0]
 print str_list
 max_prefix=len(shortest_str)
 flag=0
 for i in range(max_prefix):
  for one_str in str_list:
   if one_str[i]!=shortest_str[i]:
    return shortest_str[:i]
    break
 return shortest_str
 
 
if __name__ == '__main__':
 str_list1=['abcdef','abcdekljjh','abcdelopqwe','abcdj']
 str_list2=['abcdef','abcdekljjh','abcdelopqwe','abcde']
 print 'str_list1--->', find_longest_prefix(str_list1)
 print 'str_list2--->', find_longest_prefix(str_list2)

结果如下:

str_list1---> ['abcdj', 'abcdef', 'abcdekljjh', 'abcdelopqwe']
abcd
str_list2---> ['abcde', 'abcdef', 'abcdekljjh', 'abcdelopqwe']
abcde
[Finished in 0.3s]

以上这篇python 实现求解字符串集的最长公共前缀方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的gevent框架的入门教程
Apr 29 Python
Python映射拆分操作符用法实例
May 19 Python
全面理解Python中self的用法
Jun 04 Python
分享6个隐藏的python功能
Dec 07 Python
python实现简易内存监控
Jun 21 Python
Python版名片管理系统
Nov 30 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
使用python+whoosh实现全文检索
Dec 09 Python
Python动态声明变量赋值代码实例
Dec 30 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
浅谈Keras中shuffle和validation_split的顺序
Jun 19 Python
python实现学生信息管理系统(面向对象)
Jun 05 Python
python实现求两个字符串的最长公共子串方法
Jul 20 #Python
Django基础知识与基本应用入门教程
Jul 20 #Python
opencv python 2D直方图的示例代码
Jul 20 #Python
Linux下python制作名片示例
Jul 20 #Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 #Python
使用python脚本实现查询火车票工具
Jul 19 #Python
Python 判断文件或目录是否存在的实例代码
Jul 19 #Python
You might like
Php-Redis安装测试笔记
2015/03/05 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
python元组操作实例解析
2014/09/23 Python
在Django框架中运行Python应用全攻略
2015/07/17 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
python实现的发邮件功能示例
2019/09/11 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Python通过Pillow实现图片对比
2020/04/29 Python
python 如何在测试中使用 Mock
2021/03/01 Python
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
工业学校毕业生自荐信范文
2014/01/03 职场文书
应聘护士求职信
2014/07/21 职场文书
学雷锋日活动总结
2015/02/06 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android