【python】合并区间

用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))

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值