用x,y表示一个整数范围区间,现在输入一组这样的范围区间(用空格隔开),请输出这些区间的合并。
输入描述:
一行整数,多个区间用空格隔开。区间的逗号是英文字符。
输出描述:
合并后的区间,用过空格隔开,行末无空格
如:
输入:1,3 2,5 8,10 11,15
输出:1,5 8,10 11,15
代码:
# 输入待合并的 区域 ‘字符串’ str1 = input() def a(str1): # 字符串分割 str2 = str1.split(' ') A = [] # A用来保存分开后的 int 数据 for item in str2: if len(item)>2: if item != ' ': item = item.split(',') small = int(item[0]) large = int(item[1]) A.append(small) A.append(large) # 对A中的区间元素 进行 初排序 for i in range(len(A) // 2): for j in range(i + 1, len(A) // 2): if A[2*i] > A[2*j]:
A[2*i], A[2*i+1], A[2*j], A[2*j+1] = A[2*j], A[2*j+1], A[2*i], A[2*i+1] # 合并区间 while True: B= [] count = 0 for i in range(0,len(A),2): if i+3 < len(A): if A[i] <= A[i+2] <= A[i+1] and A[i+2] <= A[i+1] <= A[i+3] : B.append(i+1) B.append(i+2) count += 1 if A[i] <= A[i+2] <= A[i+1] and A[i+3] <= A[i+1]: B.append(i+2) B.append(i+3) count += 1 if count == 0: # 退出循环 break for i in range(len(B)-1,-1,-1): # 删除子区间 A.pop(B[i]) # 输出 结果 str3 = '' for J in range(0,len(A)-1,2): str3 = str3 + str(A[J])+','+str(A[J+1])+' ' return str3 print(a(str1))