Python求包含数字或字母最长的字符串及长度⼀、求包含数字或字母最长的字符串及长度
org = 'ss121*2222&sdfs2!aaabb'
result = [] #保存最终要输出的字符串
result_temp = [] #保存当前最长的字符串
max_len = 0 #保存最长字符串的长度
for c in org + '': #多加⼀次循环,为了最后多执⾏⼀次else; 否则若字符串末尾满⾜条件,将不会保存到result中
if c.isalnum(): #若c为数字或字母,则加⼊result_temp中
result_temp.append(c)
else: #直到遇到⼀个⾮数字和字母时,判断当前result_temp的长度
len_temp = len(result_temp)
if len_temp > max_len: #若⼤于当前最⼤长度,则清空result,把该字符串加⼊reseult中
max_len = len_temp
result.clear()
result.append(''.join(result_temp))
elif len_temp == max_len: #若等于当前最⼤长度,说明存在两个长度⼀样的字符串,直接把该字符串加⼊result中
result.append(''.join(result_temp))
result_temp = [] #遇到⾮数字和字母时,清空result_temp,继续下⼀次遍历
if len(result) == 0:
print('没有符合标准的字符串')
else:
print('符合要求的最长字符串的长度为: ', max_len)
print('符合要求的最长字符串有: ', result)
⼆、求包含数字和字母最长的字符串及长度
org = 'ss121*2222&sdfs2!aaabb'
result = [] #保存最终要输出的字符串
result_temp = [] #保存当前最长的字符串
max_len = 0 #保存最长字符串的长度
for c in org+'':
if c.isalnum(): #若字符是字母或者数字,则保存
result_temp.append(c)
else:
len_temp = len(result_temp)
result_temp_str = ''.join(result_temp)
字符串长度怎么数python
if not result_temp_str.isalpha() and not result_temp_str.isdigit(): #若字符串不全为字母或全为数字,则该字符串⼀定同时包含字母和数字if len_temp > max_len:
max_len = len_temp
result.clear()
result.append(result_temp_str)
elif len_temp == max_len:
result.append(result_temp_str)
result_temp = []
if len(result):
print('最长的字符串为: ', result, ' 长度为: ', max_len)
else:
print('没有满⾜要求的字符串')
三、另⼀种思路
1、现将字符串中所有⾮数字和字母的特殊字符替换为统⼀的⼀个特殊字符
2、将字符串进⾏分割
3、⽤两个list,分别保存包含数字和字母的字符串及其长度
4、遍历保存长度的list,提取值最⼤的下标,从⽽从保存字符串的list中取出对应的字符串
import string
str1 = 'ss121*2222&sdfs2!aaabb'
t = string.punctuation #获取所有的特殊字符
for c in str1: #替换特殊字符
if c in t:
str1 = place(c, '.')
list1 = str1.split('.') #分割字符串
list2 = [] #保存所有包含字母和数字的字符串
len_list2 = [] #保存字符串对应的长度
for str2 in list1:
if not str2.isdigit() and not str2.isalpha() and len(str2.strip()) > 1:
list2.append(str2)
len_list2.append(len(str2.strip()))
max_len = max(len_list2)
max_len_count = unt(max_len)
result = []
if max_len_count > 1: #有多个长度相同的字符串
for length in range(len(len_list2)):
if len_list2[length] == max_len:
result.append(list2[length])
elif max_len_count == 1:
result = list2[len_list2.index(max_len)]
else:
print('没有满⾜要求的字符串')
exit(0)
print('最长的字符串为: ', result, ' 长度为: ', max_len)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论