1.加密解密:
def jiami(s):
lst=[]
for i in s:
if i.isdigit() :
lst.append(str((int(i)+1)%10))
else:
if i=='z':
lst.append('A')
continue
if i=='Z':
lst.append('a')
continue
elif i.isupper():
lst.append(chr(ord(i.lower())+1))
else:
lst.append(chr(ord(i.upper())+1))
return (''.join(lst))
2.标注特殊数字:
#标注数组:
def Express_num(s):
lst=[]
i=0
while i!=len(s):
#数字判断:
if s[i].isdigit() is False:
lst.append(s[i])
i+=1
else:
lst.append('*')
#从遇到数字开始向后遍历:
c=0
for j in range(i,len(s)):
if s[j].isdigit():
c+=1
lst.append(s[j])
else:
break
lst.append('*')
i = i + c
print(lst)
return (''.join(lst))
测试用例:
3.判断最小回文子串:
def huiwen(s):
m=0
for i in range(len(s)):
for j in range(i+1,len(s)):
s1=s[i:j+1]
if s1==s1[::-1]:
m=max(m,len(s1))
return m
4.最大公共子串:
'''
测试用例:
s='asdfas'
s1='werasdfaswer'
print(zichuan_max(s1,s))#6
'''
def zichuan_max(s1,s2):
if len(s1)==len(s2):
s_max=s1;s_min=s2
else:
s_max=max(s1,s2,key=lambda x:len(x))
s_min=min(s1,s2,key=lambda x:len(x))
s_zi=''
length=0
for i in range(len(s_min)):
for j in range(i+1,len(s_min)+1):
s_zi=s_min[i:j]
if len(s_zi)==0:
continue
elif s_zi in s_max:
length=max(len(s_zi),length)
return length
5.字符串排序:
s=input()
#按照大小写转换后的ascii进行比较:
def bijiao(str):
if str.islower():
return ord(str)-32
else:
return ord(str)
lst=[]#字母数组
other=[]#非字母数组
for i in range(len(s)):
if s[i].isalpha():
lst.append(s[i])
else:
other.append(i)
lst.sort(key=bijiao)
#对字母进行逆序,方便从第一个pop
lst=lst[::-1]
i=0
last=[]#储存最后结果的数组
while(len(last)!=len(s)):
if i in other:
last.append(s[i])
else:
last.append(lst.pop())
i+=1
print(''.join(last))