获取公共链表片段
给定两个链表,获取两者中相同节点值的最大连续片段。如果没有公共片段,返回-1。
解答要求
时间限制: C/C++ 1000ms,其他语言: 2000ms
内存限制: C/C++ 256MB, 其他语言: 512MB
输入
第一行表示链表1,第二行表示链表2,每条链表长度不超过20个元素,链表不会为空。
输出
公共链表片段
样例1
输入
1 2 2 3 9 1 5
9 2 2 3 6 8
输出
2 2 3
思路
数据范围小,直接模拟即可。找到第一个数组的所有子数组,放入哈希表。遍历第二个数组的所有子数组,判断是否存在于哈希表即可。
Python3代码:
nums1 = input()
nums2 = input()
st = set()
n = len(nums1)
m = len(nums2)
for i in range(n):
for j in range(i+1,n+1):
st.add(nums1[i:j+1])
res = ""
for i in range(m):
for j in range(i+1,m+1):
if nums2[i:j+1] in st and j+1-i > len(res):
res = nums2[i:j+1]
if res:
print(res.strip())
else:
print(-1)