python 小题

python 小题:给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。
示例 2:
输入: "bbbbb"输出: 1解释: 无重复字符的最长子串是 "b",其长度为 1。
示例 3:
输入: "pwwkew"输出: 3解释: 无重复字符的最长子串是 "wke",其长度为 3。
  请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串

def func(s):
    if not isinstance(s, str): # 判断传入进来的是否是字符串类型的参数
        return None
    list1 = [] # 创建一个列表,用于存储所以的字串
    result = ""  # 创建一个空字符串,拼接字串
    for i in range(len(s)): # 按索引遍历
        if s[i] not in result: # 如果没有遇到相同的,那么就为把它拼接在一个字串里面
            result +=s[i]
        else:   # 如果遇到不相同的,那么把拼接的字串放进列表里面
            list1.append(result)
            result = ""  # 切初始化 收集字串的容器
            result +=s[i] # 然后把当前的这个元素添加到容器里面
    word = max(list1, key=len)  # 最后只需要在里面筛选出长度最长的字串即可
    print(word) # 打印字串
    return len(word) # 返回长度

 

posted @ 2019-11-12 09:11  海澜时见鲸  阅读(138)  评论(0)    收藏  举报