zoukankan      html  css  js  c++  java
  • python-又来练习题--输出一个字符串中最长的子字符串及其长度

    一、有个字符串 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))
  • 相关阅读:
    十大开源Web应用安全测试工具
    HC大会,华为联合合作伙伴发布一站式物联网IoT开发工具小熊派BearPi
    漫谈边缘计算(四):赢家是软还是硬
    漫谈边缘计算(三):5G的好拍档
    漫谈边缘计算(二):各怀心事的玩家
    漫谈边缘计算(一):边缘计算是大势所趋
    从小小后视镜看物联网的生态(下)
    机器学习笔记(四)---- 逻辑回归的多分类
    机器学习笔记(三)---- 逻辑回归(二分类)
    机器学习笔记(二)---- 线性回归
  • 原文地址:https://www.cnblogs.com/lingxia/p/7931609.html
Copyright © 2011-2022 走看看