最长公共子串

def lq(arr1,arr2):
    m = len(arr1)
    n = len(arr2)
    ar = [[0 for i in range(m)] for j in range(n)]

    for i in range(n):
        if arr2[i] == arr1[0]:
            ar[i][0] = 1
        
    for j in range(m):
        if arr1[j] == arr2[0]:
            ar[0][j] = 1

    for i in range(1,n):
        for j in range(1,m):
            if arr2[i] == arr1[j]:
                ar[i][j] = ar[i-1][j-1] + 1
            else:
                ar[i][j] = 0
                
    return ar

       
    
if __name__ == '__main__':
    arr1 = 'asjiushiwole'
    arr2 = 'asmjiushi'
    ans = lq(arr1,arr2)
    for i in range(len(ans)):
        print(ans[i])
 

输出的结果是:

[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0]
[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0]

 

很可惜,结果答案不是数组的最后一位,可能需要自己找到!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值