Python 编程题 第十节:重复数字、相邻字符去重、2的幂、最长公共子串、冒泡排序

重复数字

返回任一重复数字

lst=list(input())
res=0
for i in range(len(lst)):
    if lst[i] in lst[i+1:len(lst)]:
        res=int(lst[i])
    break
print(res)

相邻字符去重(消消乐)

str=input()
res=''
for i in str:
    if res=="":
        res+=i
    elif res[-1]!=i:
        res+=i
    else:
        res=res[:-1]

print(res)

2的幂

位运算,与运算,都为1则为1,很巧妙的方法

print(bin(4),bin(8),bin(16),bin(3),bin(7),bin(15))
#如果作与运算,2的幂和2的幂-1,结果为0
n=int(input())
def func(n):
    if n>0 and n&(n-1)==0:
        return True
    else:
        return False
print(func(n))

最长公共子串

滑动窗口

str1=input()
str2=input()
def lcs(str1,str2):
    left=0
    res=""
    for i in range(len(str1)+1):
        if str1[left:i+1] in str2:
            res=str1[left:i+1]
        else:
            left+=1
    return res
print(lcs(str1,str2))

冒泡排序

两层循环,大的就往后面放

lst=[1,14,25,31,21,17,6,8,14,9,7]
def bubble_sort(lst):
    for i in range(len(lst)):
        for j in range(len(lst)-1-i):
            if lst[j]>lst[j+1]:
                lst[j],lst[j+1]=lst[j+1],lst[j]
    return lst
print(bubble_sort(lst))

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值