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