Python:字符串例题(1)

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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值