描述:有個字符串$sd1#111$svda123!!!221&eSSDSDG,包含特殊字符、數字和字母,輸出最長的子字符串和他的長度
#例如上面的字符串包含數字字母的字符串是svda123,長度是7
需求分析:
1、先把這個字符串里面的特殊字符替換成一個固定的字符串, 。 repalce
2、按照這個固定的字符串分割 spilt
3、list,循環這個list,判斷list的每個元素是否包含數字和字母
4、判斷長度,最長的留下了,打印
5、用了倆list,一個list存符合條件的字符串,第二list存字符串的長度
6、先取到最大長度,然后判斷最大長度的個數,>1,然后再取長度的下標
7、再去字符串的list里面取值
str= '$sd1#111$svda123!!!221&eSSDSDG^svda121^svda124^'
import string
for s in string.punctuation: # 所有的特殊字符串
if s in str:
str = str.replace(s, '*')
lis = str.split('*')
print(lis)
res = [] # 存的是符合條件的字符串,也就是包含字母和數字
len_lis = [] # 存的是符合條件的字符串長度
for l in lis:
l = l.strip()
if not l.isdigit() and not l.isalpha() and len(l) > 0:
res.append(l)
len_lis.append(len(l))
max_len = max(len_lis) # 先找到最大的長度
max_len_count = len_lis.count(max_len)
if max_len_count > 1:
for len in range(len(len_lis)): #用下標來取值
if len_lis[len] == max_len:
print('最長字符串是%s,長度是%s' % (res[len], max_len))
else:
index = len_lis.index(max_len) # 再找到這個長度下標
st = res[index] # 最長的字符串
print('最長的字符串是%s,他的長度是%s' % (st, max_len))