一、求包含数字或字母最长的字符串及长度

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)
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 = str1.replace(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 = len_list2.count(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)

Python求包含数字或字母最长的字符串及长度的更多相关文章

  1. python 查找字符串同时包含数字和字母的最长子字符串的几种实现方法

    有个字符串$sd1#111$svda123!!!221&eSSDSDG,包含特殊字符.数字和字母,输出最长的子字符串和他的长度 例如上面的字符串同时包含数字和字母的字符串是svda123,长度 ...

  2. 随机生成N个字符(包含数字和字母)

    '************************************************************* ' Name: GetRandomString ' Purpose: 随机 ...

  3. QTP_随机生成N个字符(包含数字和字母)

    '************************************************************* ' Name: GetRandomString ' Purpose: 随机 ...

  4. JS 用正则表达式,验证密码包含数字和字母的方法

    必须包含至少一位数字和一位字母,脚本方法如下: function CheckPassWord(password) {//密码必须包含数字和字母 var str = password; if (str ...

  5. C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密

    要求:密码必须包含数字和字母 思路:1.列出数字和字符. 组成字符串 :chars 2.利用randrom.Next(int i)返回一个小于所指定最大值的非负随机数. 3. 随机取不小于chars长 ...

  6. .net 反射访问私有变量和私有方法 如何创建C# Closure ? C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密 C#中的foreach和yield 数组为什么可以使用linq查询 C#中的 具名参数 和 可选参数 显示实现接口 异步CTP(Async CTP)为什么那样工作? C#多线程基础,适合新手了解 C#加快Bitmap的访问速度 C#实现对图片文件的压

    以下为本次实践代码: using System; using System.Collections.Generic; using System.ComponentModel; using System ...

  7. Python求一个数字列表的元素总和

    Python求一个数字列表的元素总和.练手: 第一种方法,直接sum(list): 1 lst = list(range(1,11)) #创建一个1-10的数字列表 2 total = 0 #初始化总 ...

  8. 记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门)

    0x01 前言 最近在做代码审计的工作中遇到了一个难题,题目描述如下: <?php include 'flag.php'; if(isset($_GET['code'])){ $code = $ ...

  9. Java随机输出验证码包含数字、字母、汉字

    //随机验证码,有数字.字符 //生成随机数,然后再截取,还要限定随机数的范围 String zimu = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn ...

随机推荐

  1. 编写自定义GenericServlet

    用途: 编写自定义GenericServlet类后,子类只需继承这个类,就可以直接使用ServletConfig的config对象和ServletConfig接口的方法,而不需要init()方法获取c ...

  2. 微信小程序-修改单选框和复选框大小的方法

    方法有两种: 一:采用css的zoom属性 zoom缩放会将元素保持在左上角,并且会有毛边,可能会稍稍改变元素原来的形状. 二:采用css3的transform:scale属性 zoom缩放会将元素保 ...

  3. 026 Remove Duplicates from Sorted Array 从排序数组中删除重复项

    给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度.不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点.示例:给定数组: nums ...

  4. new 和 delete 用法

    1. 这两个其实是 C++ 语言标准库的库函数,原型分别如下: void *operator new(size_t); //allocate an object void *operator dele ...

  5. python3+Appium自动化07-滑动操作以及滑动方法封装

    滑动解析 滑动主要分为:水平滑动.垂直滑动.任意方向滑动 滑动轨迹 在Appium中模拟用户滑动操作需要使用swipe方法,该方法定义如下: def swipe(self, start_x, star ...

  6. postman将上一个请求的结果作为下一个请求的数据

    需要在Tests中写入如下代码: var jsonData = JSON.parse(responseBody); postman.setGlobalVariable("token" ...

  7. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

  8. PHP中文手册2

    11.异常处理 用户可以用自定义的异常处理类来扩展 PHP 内置的异常处理类.以下的代码说明了在内置的异常处理类中,哪些属性和方法在子类中是可访问和可继承的.译者注:以下这段代码只为说明内置异常处理类 ...

  9. xcrun -sdk 选择

    在将FFmpeg编译成IOS版的时候,接触到编译脚本的一段(删减了部分): for ARCH in $ARCHS do if [ "$ARCH" = "i386" ...

  10. flask--数据库连接--URL

    使用URL制定数据库 数据库引擎 URL MySQL mysql://username:password@hostname/database Postgres postgresql://usernam ...