B站⾯试题 ⽐较版本号,给⼀个[“2.1.0“, “1.5“, “2“, “1.1.999.1.2.3“, “0.10.0“] 要求 从⼩到⼤排序


一、⽐较版本号,给⼀个[“2.1.0”, “1.5”, “2”, “1.1.999.1.2.3”, “0.10.0”] 要求 从⼩到⼤排序

代码如下(示例):

def comprare_version(x1,x2):
    '''
    自定义比较规则,比较版本号的大小
    :param x1:
    :param x2:
    :return:
    '''
    #x1,x2代表中的每一个字符串(例如:“2.1.0”)
    s1 = [int(x) for x in x1.split('.')]
    s2 = [int(x) for x in x2.split('.')]
    for x ,y in zip(s1,s2):
        if x<y:
            return -1
        elif x>y:
            return 1
    if len(s1)>len(s2):
        return 1
    elif len(s1)<len(s2):
        return -1
    return 0







def selector_sort(versions):
    for i in range(len(versions)):
        min_index=i
        for j in range(i+1,len(versions)):
        #调用自定义比较规则
            if comprare_version(versions[min_index],versions[j])>0:
                min_index=j
        versions[i],versions[min_index]=versions[min_index],versions[i]



#调用
if __name__ == '__main__':
        a=["2.1.0", "1.5", "2", "1.1.999.1.2.3", "0.10.0"]
        selector_sort(a)
        print(a)

二、从字符串⾥提取单词,例如”my name is cc“,将单词放到列表⾥,不要⽤ split ⽅法

代码如下(示例):

#方法1:遍历,遍历等于空,就把开始下标和结束下标,记录,就是一个完整的单词,然后赋值到空[],最后打印
def demo1(nums):
    l=len(nums)
    b=[]
    x = 0
    y = 0
    for i in range(0,l):
        if nums[i] ==' ':
            y=i
            b.append(nums[x:y])
            x=i+1
    b.append(nums[x:l])

    print(b)

demo1("my name is cc")

三.给定⼀个整数数组 nums 和⼀个整数⽬标值 target,请你在该数组中找出 和为⽬标值target 的那 两个 整数,并返回它们的数组下标。如 nums = [2,7,11,15], target = 9输出:[0,1]⽤两种⽅法实现

代码如下(示例):

#方法1:双重遍历,相加等于target,将下标存在【】里,最后打印
def demo(nums,target):
    l=len(nums)
    a=[]
    for i in range(0,l-1):
        for j in range(i+1,l):
            if nums[i]+nums[j]==target:
                a.append(i)
                a.append(j)
                print(a)

demo([2,7,11,15],9)



#方法2:两个数相减,得到的结果是否在list中,是就打印
def demo2(nums,target):
    l=len(nums)
    a=[]
    for i in range(0,l-1):
        b=target-nums[i]
        if b in nums[i+1:]:
            a.append(i)
            a.append(nums.index(b))
            break
    print(a)
demo2([2,7,11,15],9)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳佳不爱上班

送你一朵小红花,生活不必太焦虑

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值