一、有个字符串 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. vue-element-ui upload组件调用两次接口

    在使用upload中,默认是自动上传,会发现会调用两次接口,一次是Request Method: OPTIONS且不带任何参数(群里大佬说是跨域 预检测),一次是Request Method: POS ...

  2. js获取两个经纬度之间的角度(0度-360度)

    /** * 获取角度 */mapNumberUtil.getAngle = function(lng_a,lat_a, lng_b, lat_b){ var a = (90 - lat_b) * Ma ...

  3. Windows 下apache https配置(phpstudy)

    1.首先获取证书,https://www.pianyissl.com/  免费三个月的 或者 自己生成私钥.证书,然后应用到apache中. http://blog.sina.com.cn/s/blo ...

  4. Vue基础第一章

    Vue的简单示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  5. 如何在Linux下安装Tomcat

    上篇文章写到了Linux下安装JDK1.8,这篇文章详细阐述一下 如何在Linux下安装Tomcat!!!有啥问题可以留言,博主每天都会看博客的. 准备步骤和方法和以前一样,博主用的工具是XShell ...

  6. LVM逻辑卷理论及配置

    LVM的概念 LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理.它是 Linux 系统对磁盘分区的一种管理机制. LVM 是在硬盘分区之上建立一个逻辑层,这个逻 ...

  7. element-ui + redis + mongo + nuxt

    用户注册: let {username,password} = req.body; let u = await UserModel.findOne({username}); if(u){ res.js ...

  8. 跨平台开发框架DevExtreme v19.1.4正式发布|附下载

    DevExtreme Complete Subscription是性能最优的 HTML5,CSS 和 JavaScript 移动.Web开发框架,可以直接在Visual Studio集成开发环境,构建 ...

  9. 从springmvc 过度到 springboot

    1.web.xml 形式的MVC项目 web.xml ,web.xml的启动类在 web 容器里,即Tomcat中. Tomcat的main方法会加载 web.xml.为什么Tomcat会加载 web ...

  10. 【LuoguP4433】[COCI2009-2010#1] ALADIN(含类欧几里得算法推导)

    题目链接 题意简述 区间赋值模意义下等差数列,询问区间和 \(N\leq 10^9,Q\leq 10^5\) Sol 每次操作就是把操作区间\([L,R]\)中的数赋值成: \[(X-L+1)*A\ ...