python实现leetcode算法题库-maxLengthofRepeatedSubarray-最长公共子序列(718)

给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。

示例:

输入:
A: [1,2,3,2,1]
B: [3,2,1,4,7]
输出:3
解释:
长度最长的公共子数组是 [3, 2, 1] 。

字符串的公共子序列的简单实现- 暴力解法

def demo(a, b):
    """
    枚举两个数组的初始位置,依次比较每个元素,相同+1,每次比较取max,直到end loop,return max
    :param a:
    :param b:
    :return:
    """
    ans = 0
    for i in range(len(a)):

        for j in range(len(b)):
            k = 0
            while i+k < len(a) and j+k < len(b) and a[i+k] == b[j+k]:
                k += 1
            ans = max(ans, k)

    return ans


if __name__ == "__main__":
    lst_a = [1, 2, 3, 2, 1]
    lst_b = [3, 2, 1, 4, 7]
    print(demo(lst_a, lst_b))
    # 3 >>> [1, 2, 3]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/davis12/p/14665964.html