一、有个字符串 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. 真香系列之 Golang 升级

    Golang 以前的依赖管理一直饱受诟病,社区的方案也层出不穷,比如 vendor, glide, godep 等.之前的依赖管理一直是依靠 GOPATH 或者将依赖代码下载到本地,这种方式都有劣势. ...

  2. 9.css3动画-2D/3D变形--trasform

    transform: None不转换. Translate(x,y)通过设置X轴的值进行移动. translateY(y)通过设置Y轴的值进行移动. Scale(x,y)定义2D缩放. ScaleX( ...

  3. 教你搭建基于typescript的vue项目

    自尤大去年9月推出vue对typescript的支持后,一直想开箱尝试,对于前端sr来说,vue的顺滑加上ts的面向对象,想着就非常美好~ 终于在两个月前,找到了个机会尝试了一把vue+ts的组合. ...

  4. 第四小节之Java 集合类

    Java的集合类就像一个容器,专门用来存储Java类的对象.这些类可以存储任意类型的对象,并且长度可变,统称为集合,这些类位于java.util包中,数组也可以保存多个对象,但在某些情况下无法确定到底 ...

  5. 监控mysql的存储引擎

    监控mysql 显示进程状态变量 mysql> show variables like '%thread%'; +----------------------------+----------- ...

  6. JS基础知识二

    JS控制语句 switch 语句用于基于不同的条件来执行不同的动作 <script> function myFunction(){ var x; var d=new Date().getD ...

  7. Big Data(七)MapReduce计算框架

    二.计算向数据移动如何实现? Hadoop1.x(已经淘汰): hdfs暴露数据的位置 1)资源管理 2)任务调度 角色:JobTracker&TaskTracker JobTracker: ...

  8. Java并发编程实战 第8章 线程池的使用

    合理的控制线程池的大小: 下面内容来自网络.不过跟作者说的一致.不想自己敲了.留个记录. 要想合理的配置线程池的大小,首先得分析任务的特性,可以从以下几个角度分析: 任务的性质:CPU密集型任务.IO ...

  9. java ArrayList迭代过程中删除

    第一种迭代删除方式: 第二种迭代删除方式: 第三种迭代删除: 第四种迭代删除: 第五种迭代删除: 第六种: ArrayList中remove()方法的机制,首先看源码: 真正的删除操作在fastRem ...

  10. SpringBoot框架(6)--事件监听

    一.场景:类与类之间的消息通信,例如创建一个对象前后做拦截,日志等等相应的事件处理. 二.事件监听步骤 (1)自定义事件继承ApplicationEvent抽象类 (2)自定义事件监听器,一般实现Ap ...