香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python最长公共子串算法实例


时间:2021-11-09 10:28 作者:admin610456


本文实例讲述了python/' target='_blank'>python最长公共子串算法。分享给大家供大家参考。具体如下:

#!/usr/bin/env Python # find an LCS (Longest Common Subsequence). # *public domain*  def find_lcs_len(s1, s2):  m = [ [ 0 for x in s2 ] for y in s1 ]  for p1 in range(len(s1)):   for p2 in range(len(s2)):    if s1[p1] == s2[p2]:     if p1 == 0 or p2 == 0:      m[p1][p2] = 1    else:      m[p1][p2] = m[p1-1][p2-1]+1   elif m[p1-1][p2] < m[p1][p2-1]:     m[p1][p2] = m[p1][p2-1]    else:               # m[p1][p2-1] < m[p1-1][p2]     m[p1][p2] = m[p1-1][p2]  return m[-1][-1]  def find_lcs(s1, s2):  # length table: every element is set to zero.  m = [ [ 0 for x in s2 ] for y in s1 ]  # direction table: 1st bit for p1, 2nd bit for p2.  d = [ [ None for x in s2 ] for y in s1 ]  # we don't have to care about the boundery check.  # a negative index always gives an intact zero.  for p1 in range(len(s1)):   for p2 in range(len(s2)):    if s1[p1] == s2[p2]:     if p1 == 0 or p2 == 0:      m[p1][p2] = 1    else:      m[p1][p2] = m[p1-1][p2-1]+1    d[p1][p2] = 3          # 11: decr. p1 and p2    elif m[p1-1][p2] < m[p1][p2-1]:     m[p1][p2] = m[p1][p2-1]     d[p1][p2] = 2          # 10: decr. p2 only    else:               # m[p1][p2-1] < m[p1-1][p2]     m[p1][p2] = m[p1-1][p2]     d[p1][p2] = 1          # 01: decr. p1 only  (p1, p2) = (len(s1)-1, len(s2)-1)  # now we traverse the table in reverse order.  s = []  while 1:   print p1,p2   c = d[p1][p2]   if c == 3: s.append(s1[p1])   if not ((p1 or p2) and m[p1][p2]): break  if c & 2: p2 -= 1  if c & 1: p1 -= 1 s.reverse()  return ''.join(s)  if __name__ == '__main__':  print find_lcs('abcoisjf','axbaoeijf')  print find_lcs_len('abcoisjf','axbaoeijf')

希望本文所述对大家的Python程序设计有所帮助。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)