码迷,mamicode.com
首页 > 编程语言 > 详细

字符串算法大全

时间:2016-08-07 18:36:21      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

1、LCS

技术分享

技术分享

def lcs(a,b):
    lena=len(a)
    lenb=len(b)
    c=[[0 for i in range(lenb+1)] for j in range(lena+1)]
    flag=[[0 for i in range(lenb+1)] for j in range(lena+1)]
    for i in range(lena):
        for j in range(lenb):
            if a[i]==b[j]:
                c[i+1][j+1]=c[i][j]+1
                flag[i+1][j+1]=ok
            elif c[i+1][j]>c[i][j+1]:
                c[i+1][j+1]=c[i+1][j]
                flag[i+1][j+1]=left
            else:
                c[i+1][j+1]=c[i][j+1]
                flag[i+1][j+1]=up
    return c,flag

def printLcs(flag,a,i,j):
    if i==0 or j==0:
        return
    if flag[i][j]==ok:
        printLcs(flag,a,i-1,j-1)
        print(a[i-1],end=‘‘)
    elif flag[i][j]==left:
        printLcs(flag,a,i,j-1)
    else:
        printLcs(flag,a,i-1,j)
        
a=ABCBDAB
b=BDCABA
c,flag=lcs(a,b)
for i in c:
    print(i)
print(‘‘)
for j in flag:
    print(j)
print(‘‘)
printLcs(flag,a,len(a),len(b))
print(‘‘)

 

字符串算法大全

标签:

原文地址:http://www.cnblogs.com/pkuYang/p/5746762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!