一、有个字符串 str= '$sd1#111$svda123!!!221&eSSDSyyyyyyDG^svda121^svda124^1111111111111'
包含特殊字符、数字和字母,输出最长的子字符串和他的长度
例如上面的字符串同时包含数字和字母的字符串是svda123,长度是7
思路:
1、先把特殊字符转换成固定字符#
2、按照固定字符分割字符串生成lis
3、获取lis中每一个的长度并生成第二个用来存储长度的len_lis
4、获取长长度然后统计最长长度的数量
5、如果只有数量是1的话直接通过下标获取lis的下标然后输出字符串和长度
6、如果数量大于1就通过下标循环判断等于最长长度的长度然后输出字符串和长度
str= '$sd1#111$svda123!!!221&eSSDSyyyyyyDG^svda121^svda124^1111111111111'
import string
for s in string.punctuation:
if s in str:
str = str.replace(s,'#')
lis = str.split('#')
len_lis=[]
for i in lis:
len_lis.append(len(i))
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'%(lis[len],max_len))
else:
index = len_lis.index(max_len)
st = lis[index]
print('最长的字符串是%s,长度是%s'%(st,max_len))

二、如果输出的字符串必须同事包含数字和字母:

分析:

不过是加了一个条件就是最长的字符串必须同事包含数字和字母

思路:
1、先把特殊字符转换成固定字符#
2、按照这个固定字符分割字符串并且判断是不是同时包含数字和字母将符合条件的放到lis中
3、获取lis中每一个的长度并生成第二个用来存储长度的len_lis
4、获取长长度然后统计最长长度的数量
5、如果只有数量是1的话直接通过下标获取lis的下标然后输出字符串和长度
6、如果数量大于1就通过下标循环判断等于最长长度的长度然后输出字符串和长度
import string
str= '$sd1#111$svda123!!!221&eSSDSyyyyyyDG^svda121^svda124^1111111111111'
for s in string.punctuation:
if s in str:
str = str.replace(s,'#')
lis = str.split('#')
res_lis=[]#用来存放符合条件的字符串
len_lis=[]#用来存放符合条件的字符串的长度
for i in lis:
if not i.isdigit() and not i.isalpha() and len(i)>0:
res_lis.append(i)
len_lis.append(len(i))
max_len = max(len_lis)
max_len_count = len_lis.count(max_len)
if max_len_count >1:
for e in range(len(len_lis)):
if len_lis[e] == max_len:
print('最长的字符串是%s,长度是%s' % (res_lis[e], max_len))
else:
index = len_lis.index(max_len)
st = res_lis[index]
print('最长的字符串是%s,长度是%s'%(st,max_len))

python-又来练习题--输出一个字符串中最长的子字符串及其长度的更多相关文章

  1. Python习题-输出一个字符串中最长的子字符串及其长度

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

  2. hdu3068 求一个字符串中最长回文字符串的长度 Manacher算法

    最长回文 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. Java如何计数替换字符串中第一次出现的子字符串?

    在Java编程中,如何拆分正则表达式和字符串? 以下示例演示如何使用Matcher类的replaceFirst()方法替换字符中指定的子字符串的首次出现. package com.yiibai; im ...

  4. 用C#通过正则表达式截取字符串中符合条件的子字符串

    仅仅作为简单的记录,不多说直接上代码(仅测试使用): private void Test() { Regex ConnoteA = new Regex("^[a-zA-Z]\\d{8}$&q ...

  5. 字符串中连续出现最多的子串 & 字符串中最长反复子串

    字符串中连续出现最多的子串 & 字符串中最长反复子串 字符串中连续出现最多的子串 & 字符串中最长反复子串,这两个问题都能够用后缀数组来表示,至于后缀数组能够參考编程珠玑P156:后缀 ...

  6. 使用后缀数组寻找最长公共子字符串JavaScript版

    后缀数组很久很久以前就出现了,具体的概念读者自行搜索,小菜仅略知一二,不便讨论. 本文通过寻找两个字符串的最长公共子字符串,演示了后缀数组的经典应用. 首先需要说明,小菜实现的这个后缀数组算法,并非标 ...

  7. 基于python 3.5 所做的找出来一个字符串中最长不重复子串算法

    功能:找出来一个字符串中最长不重复子串 def find_longest_no_repeat_substr(one_str): #定义一个列表用于存储非重复字符子串 res_list=[] #获得字符 ...

  8. javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数

    javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...

  9. 算法:Manacher,给定一个字符串str,返回str中最长回文子串的长度。

    [题目] 给定一个字符串str,返回str中最长回文子串的长度 [举例] str="123", 1 str="abc1234321ab" 7 [暴力破解] 从左 ...

随机推荐

  1. 【抓包工具】使用Fiddler关于“由于目标计算机积极拒绝,无法连接。”的解决方案

    今天使用Fiddler的时候遇到下面这个问题:在地址栏想打开个一般处理程序,出现连接本机失败的提示,如下图: 而这在我没打开Fiddler的时候是显示正常的. 查看Fiddler,在嗅探 -> ...

  2. ——HTTP状态码

    200 请求成功,请求所希望的响应头或数据体将随此返回 302 请求的资源现在临时从不同的URI响应请求,由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求. 304 如果客户端发送了一 ...

  3. 2019-11-29-dotnet-使用-System.CommandLine-写命令行程序

    title author date CreateTime categories dotnet 使用 System.CommandLine 写命令行程序 lindexi 2019-11-29 08:33 ...

  4. mongoose 开源http库(2) --HTTP服务示例

    要创建HTTP服务器,请按照以下格式: 通过调用mg_bind()或mg_bind_opt()创建侦听连接 调用mg_set_protocol_http_websocket()创建listening连 ...

  5. Java并发(基础知识)—— 创建、运行以及停止一个线程

    在计算机世界,当人们谈到并发时,它的意思是一系列的任务在计算机中同时执行.如果计算机有多个处理器或者多核处理器,那么这个同时性是真实发生的:如果计算机只有一个核心处理器那么就只是表面现象. 现代所有的 ...

  6. [工具] BurpSuite--Intruder功能

    BurpSuite--Intruder功能 0x00 配置说明 intruder是进行爆破的,基本流程是标注请求的爆破参数,然后配置字段,选择爆破方式进行爆破,下面来记录下工具的使用 选中intrud ...

  7. Java学习03-进制学习

    计算机中是以二进制来进行数据传递的,二进制分为二进制.八进制.十进制.十六进制 而他们之间如何进行转换呢,二进制作为元,其他进制都是经二进制进行换算的,所以无论什么进制之间的转换都是先转换为二进制,再 ...

  8. kloxo增加了域名,怎么不能访问?如何重启web服务?

    kloxo增加了域名,怎么不能访问?这是因为需要重新启动web服务. 有时候网站打不开,也可以尝试重启web服务. 重启web服务方法: 登录kloxo后台-->左边栏:服务器linux --& ...

  9. Parallel并行循环

    Parallel.For(, , new ParallelOptions() { MaxDegreeOfParallelism = 100 },(i, pls) => { ) { pls.Bre ...

  10. mac下phpize编译提示Cannot find autoconf解决办法

    mac下phpize编译如下报错: /usr/bin/phpizeConfiguring for:PHP Api Version: 20121113Zend Module Api No: 201212 ...