题目:用x,y表示一个整数范围区间,现在输入一组这样的范围区间(用空格隔开),请输出这些区间的合并。
输出描述: 合并后的区间,用过空格隔开,行末无空格。
code:
def merge(intervals):
"""
合并区间算法。
:param intervals: 传入的区间数组。例如[[1, 3], [2, 5]]
:return: 合并后的区间。例如[[1, 5]]
"""
out = []
for i in sorted(intervals, key=lambda i: i[0]): # 对区间进行排序
if out and i[0] <= out[-1][1]: # 当前区间起始位置小于out最后一个元素的结束位置,这时就要进行合并
out[-1][1] = max(out[-1][1], i[1]) # 合并区间。区间的结束位置 = max(当前遍历区间的结束位置,out最后一个区间的结束位置)
else:
out.append(i) # 不需要合并时的处理。
return out
# 将输入的字符串转换成区间形式放到intervals数组中。
intervals = []
for i in input().split(): # 切成"1,3"、"2,5"这种形式
start, end = i.split(",")
intervals.append([int(start), int(end)])
#
## 调用合并区间算法
out = merge(intervals)
# 输出处理。
res = ""
for i in out:
res = res + str(i[0]) + "," + str(i[1]) + " "
print(res.rstrip(";"))