题目描述
对报文进行重传和重排序是常用的可靠性机制,重传缓中区内有一定数量的子报文,每个子报文在原始报文中的顺序已知,现在需要恢复出原始报文
输入描述
输入第一行为N,表示子报文的个数,。
输入第二行为N个子报文,以空格分开,子报文格式为:
字符审报文内容+后缀顺序索引
字符串报文内容由[a-z,A-Z]组成,后缀为整型值,表示顺序。 顺序值唯一,不重复。
输出描述
输出恢复出的原始报文,按照每人子报文的顺序的升序排序恢复出原始报文,顺序后缀需要从恢复出的报文中删除掉
4
rolling3 stone4 like1 a2
like a rolling stone
代码实现
import re
def revc_org_mesg(N, str):
#先获取字符串中的数字
mes_dic={}
org_messge=''
num_list=re.findall("\d+",str)
str_list=re.findall('[a-zA-Z]+',str)
for i in range(N):
mes_dic[num_list[i]]=str_list[i]
#对数字列表排序
num_list.sort()
#根据排序后的数字取出对应字段中的值组成原始报文
str_list=[]
for i in num_list:
str_list.append(mes_dic[i])
org_messge=' '.join(str_list)
return org_messge
if __name__=='__main__':
#字符串
N = 4
str='like1 stone3 rolling4 a2'
org_messge=revc_org_mesg(N,str)
print(org_messge)
总结
知识运用
1.python正则匹配 re,re.find re.findall,re.match;\d, \w\W 。。。
2.字典的使用