最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python最長公共子串算法實例

 更新時間:2015年03月07日 10:09:36   作者:Sephiroth  
這篇文章主要介紹了Python最長公共子串算法,實例分析了Python字符串操作的技巧,需要的朋友可以參考下

本文實例講述了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程序設計有所幫助。

相關文章

  • Python中的Networkx的基本使用

    Python中的Networkx的基本使用

    Networkx是一個Python的包,可以用來創(chuàng)建和處理復雜的圖網(wǎng)絡結(jié)構(gòu),這篇文章主要介紹了Python中的Networkx詳解,需要的朋友可以參考下
    2023-02-02
  • Python基礎入門之魔法方法與異常處理

    Python基礎入門之魔法方法與異常處理

    在python中,所有以“__"雙下劃線包起來的方法,都統(tǒng)稱為魔法方法,下面這篇文章主要給大家介紹了關于Python基礎入門之魔法方法與異常處理的相關資料,需要的朋友可以參考下
    2021-11-11
  • OpenCV霍夫圓變換cv2.HoughCircles()

    OpenCV霍夫圓變換cv2.HoughCircles()

    這篇博客將學習如何使用霍夫圓變換在圖像中找到圓圈,OpenCV使用cv2.HoughCircles()實現(xiàn)霍夫圓變換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Python深度學習神經(jīng)網(wǎng)絡基本原理

    Python深度學習神經(jīng)網(wǎng)絡基本原理

    人工神經(jīng)網(wǎng)絡(Artificial Neural Networks,簡寫為ANNs)也簡稱為神經(jīng)網(wǎng)絡(NNs)或稱作連接模型(Connection Model),它是一種模仿動物神經(jīng)網(wǎng)絡行為特征,進行分布式并行信息處理的算法數(shù)學模型
    2021-10-10
  • Jupyter Notebook打開任意文件夾操作

    Jupyter Notebook打開任意文件夾操作

    這篇文章主要介紹了Jupyter Notebook打開任意文件夾操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python3 中文亂碼與默認編碼格式設定方法

    python3 中文亂碼與默認編碼格式設定方法

    今天小編就為大家分享一篇python3 中文亂碼與默認編碼格式設定方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python隨機生成數(shù)模塊random使用實例

    Python隨機生成數(shù)模塊random使用實例

    這篇文章主要介紹了Python隨機生成數(shù)模塊random使用實例,本文直接給出示例代碼,需要的朋友可以參考下
    2015-04-04
  • Python基于callable函數(shù)檢測對象是否可被調(diào)用

    Python基于callable函數(shù)檢測對象是否可被調(diào)用

    這篇文章主要介紹了Python基于callable函數(shù)檢測對象是否可被調(diào)用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • python中g(shù)lobal用法實例分析

    python中g(shù)lobal用法實例分析

    這篇文章主要介紹了python中g(shù)lobal用法,較為詳細的分析了global的功能并實例演示了相應的使用技巧,需要的朋友可以參考下
    2015-04-04
  • 利用Python?Difflib庫強大的文字比較功能快速輕松查重

    利用Python?Difflib庫強大的文字比較功能快速輕松查重

    這篇文章主要介紹了利用Python?Difflib庫強大的文字比較功能快速輕松查重實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01

最新評論

莒南县| 梨树县| 恭城| 信阳市| 蓬溪县| 万安县| 舒城县| 柘荣县| 镇康县| 工布江达县| 阿瓦提县| 东乡族自治县| 宜良县| 衡阳县| 建昌县| 康马县| 远安县| 康保县| 西平县| 禹州市| 红原县| 化德县| 塘沽区| 湄潭县| 永泰县| 上杭县| 秦安县| 夏河县| 沁阳市| 曲阳县| 清原| 江达县| 龙陵县| 太康县| 沿河| 湛江市| 塘沽区| 樟树市| 衡阳市| 普洱| 灯塔市|