欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

每天一道leetecode:3 无重复字符的最长字串(medium)

程序员文章站 2022-07-14 08:03:06
...

这道题真的。。。。。

花费了大量时间,可能思路不对,中间出了一堆bug

比如:bbbb、tvxt、tvtvtvt等等等,一堆都在出错,最后搞出来一个版本,结果血崩,到了最后的案例没通过。。。

每天一道leetecode:3 无重复字符的最长字串(medium)

没办法,只好重新做了,肯定是里面的for循环有问题,那么就不能这样搞了

重做了一遍,还好,成功了。

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        if len(s) == 0:
            return 0
        if len(s) == 1:
            return 1
        if len(s) == 2:
            if s[0] == s[1]:
                return 1
            else:
                return 2
        # 首先将字符串转化为数组
        a = []
        for c in s:
            a.append(ord(c)-ord('a'))
        #print(a)
        # [0, 1, 2, 0, 1, 2, 1, 1]

        b = {}
        for c in s:
            b[ord(c)-ord('a')] = 0

        #print(b)

        len1 = 0
        num = 0

        sum_len = 0

        for i in a:
            # 指代现在数的下表
            num = num + 1
            # 说明从未出现过
            if b[i] == 0:
                # 长度加
                len1 = len1 + 1
                b[i] = num
                #print(len1)
                #print('b[i]---')
                #print(b[i])
            # 如果出现过,那么这个时候b[i]的值为下标
            else:
                if sum_len<len1:
                    sum_len = len1
                if len1 >= num - b[i]:
                    len1 = num - b[i]
                else:
                    len1 = len1 + 1
                #print(len1)
                b[i] = num

                #print('b[i]')
                #print(b[i])

        if sum_len<len1:
            sum_len = len1
            
        #print(sum_len)
        return sum_len

每天一道leetecode:3 无重复字符的最长字串(medium)

突然发现,有时候做题出了思路外,还有一定的运气成分,可能某一方面你的思路没错,换一种方式可能就会节省很多时间。

上午提前把leetecode任务完成啦,因为下午和晚上都有课,啦啦啦

快到大中午啦,一道题浪费了好多时间,哭哭,滚去写论文了,????

相关标签: leetecode