LeetCode-无重复字符的最长字串-python

题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。


主要思路:从头开始遍历,直到遇到重复的元素为止;再次循环字符串,从所寻找的上一个子串中重复元素所在位置的后一个位置开始遍历;每次遍历后比较子串长度记下最大的那个长度。

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        length=len(s) #原数组长度
        leng=0  #记录最大子串的长度
        i=0   #遍历字符串的变量
        ss = []  #存放子串的列表
        while(i!=length):   #当未到达字符串的末尾时
            for j in range(i,length):  #遍历
                if(s[j] in ss):     #如果重复则比较现在子串是否比之前子串长,退出循环
                    if(len(ss)>leng):
                        leng=len(ss)
                    ssindex=ss.index(s[j])  
                    i=i+ssindex+1   #再次遍历时的下标值
                    ss.clear()    #清空列表
                    break
                else:
                    ss.append(s[j])    #不重复则添加到子串列表中
            if(j==length-1):  #遍历到末尾都没有重复元素
                break
        if(len(ss)>leng):  #处理最后一次完成子串查找时的情况
            return(len(ss))
        else:
            return(leng)  

你可能感兴趣的:(LeetCode-无重复字符的最长字串-python)