淡黄的长裙


t = int(input())

def cut(a1x):
    lis = []
    for i in range(len(a1x)):
        a = ''
        if i + 3 <= len(a1x) - 1:#尽可能的切出字符串alx中连续4位
            a = a + a1x[i] + a1x[i + 1] + a1x[i + 2] + a1x[i + 3]
        if a != '':
            lis.append(a)
    return lis

for i in range(t):
    a, b = input().split(',')
    li = cut(a)  #得到 a的每4位组成的的列表
    if li!=[]:
        m =abs( int(li[0])-int(b))
        r=0

        for i in li:
            if abs(int(b) - int(i)) < m: #在列表中得到最小的差 m
                m = abs(int(b) - int(i))

        for i in li:
            if abs(int(b) - int(i)) == m:
                r = li.index(i)   # r在列表中对应的序号 而且能保证是列表当中第一个出现的
                break

    if len(a) >= 3:#a只有三位时,在前三位中选出差距最小的,并记 de表示以后要扔前几个数
        one = abs(int(a[0]) - int(b))
        two = abs(int(a[0] + a[1]) - int(b))
        three = abs(int(a[0] + a[1] + a[2]) - int(b))
        wa = [int(b), one, two, three]
        mi = min(wa)
        if int(b) == mi:
            de = 0
        elif one == mi:
            de = 1
        elif two == mi:
            de = 2
        elif three == mi:
            de = 3

    elif len(a) == 2:#a只有二位时
        one = abs(int(a[0]) - int(b))
        two = abs(int(a[0] + a[1]) - int(b))
        wa = [int(b), one, two]
        mi = min(wa)
        if int(b) == mi:
            de = 0
        elif one == mi:
            de = 1
        elif two == mi:
            de = 2

    elif len(a) == 1:#a只有一位时
        one = abs(int(a[0]) - int(b))
        wa = [int(b), one]
        mi = min(wa)
        if int(b) == mi:
            de = 0
        elif one == mi:
            de = 1

    elif len(a) == 0:#a不存在时
        wa = [int(b)]
        mi = min(wa)
        de = 0

    if li != []:
        if m >= mi:
            k = len(a) - de
        else:
            k = len(a) - (r + 4)
    else: #a都没有四位
        k = len(a) - de

    print(k)

错了的地方在m的起始值赋为了int(a)
若1000,9568
比它小
后续无法更新 r

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值