感觉这道题的难度在L2,思路并不复杂,做法也很多,这里就直接用字符串遍历查找的方法,这种方法并不是最好的解法,但思路简单
一开始碰到了测试点一不通过的问题,后来搜索相关解法,发现以下问题需要注意
需要对断口信息进行排序,而且需要按照长度由短到长排序,才会通过全部测试点
已经找到的断口,做一下标记,以免查找的时候可能会有异常
代码如下:
import sys
in_1 = int(sys.stdin.readline())-1
in_list_1 = list(sys.stdin.readline().split())
in_2 = int(sys.stdin.readline())
in_dict_2 = {}
in_dict_3 = {}
out_list_1 = []
sign = 0
for x in range(1,in_2+1):
in_list_2 = sys.stdin.readline().replace('\n','')
in_dict_2[in_list_2] = len(in_list_2)
in_dict_3[str(list(in_list_2.split())[1:])] = x
sort_list = sorted( in_dict_2.items(),key = lambda x:x[1],reverse = False)
for x in sort_list:
out_list_1.append(list(x[0].split())[1:])
while True:
for y in range(0,len(out_list_1)):
if out_list_1[y][0] == in_list_1[sign]:
if out_list_1[y] == in_list_1[sign:sign+len(out_list_1[y])]:
sign = sign + len(out_list_1[y]) - 1
if sign == in_1:
print("{}".format(in_dict_3[str(out_list_1[y])]),end="")
out_list_1[y] = ['*']
break
else :
print("{} ".format(in_dict_3[str(out_list_1[y])]),end="")
out_list_1[y] = ['*']
break
if sign==in_1:
break