Python学习01Python基础知识-作业4字符串

举报
孙小北 发表于 2021/09/05 10:25:05 2021/09/05
【摘要】 题目描述输入一个字符串,求最大的没有重复字符的子字符串长度比如:输入huaweicloudaigallery输出 9 (huaweiclo或aweicloud或weiclouda) 代码实现string = input() # 手动输入字符串if string is None or len(string)==0: string = input("字符串不能为空,请重新输入") de...

题目描述

输入一个字符串,求最大的没有重复字符的子字符串长度

比如:输入huaweicloudaigallery

输出 9 (huaweiclo或aweicloud或weiclouda)

代码实现

string = input()  # 手动输入字符串

if string is None or len(string)==0:
    string = input("字符串不能为空,请重新输入") 

def func(s):
    len_s = len(s)
    str_dict = {} # 数据字典 存储最近的不重复字符(key)及其下标(value)
    maxlength = 0  # 最长字串长度
    start = 0  # 当前子串开始位置,最近重复的下一个位置
    curlength = 0  # 当前子串长度
    for i in range(len_s):
        # 如果当前字符在数据字典中,且存在字符的位置在当前字串内,即出现重复,需要重复开始
        if s[i] in str_dict and str_dict[s[i]]>=start:
            start = str_dict[s[i]] + 1  # 重新开始
            curlength = 0
        curlength = curlength+1  # 当前子串长度+1
        # 更新字典 当前字符最近的位置
        str_dict[s[i]] = i
        if curlength > maxlength:
            maxlength = curlength # 更新最长长度
    print(maxlength)

func(string)

输出示例

huaweicloudaigallery
9

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。