• 【100Days of 100 line Code】6 day


    今天很低产,做了一道题。

    只想说一句,去你妈的。

    最后一例没有过,时间超出限制。

    按理说,时间复杂度也就应该是O(n),但是没过。好吧,不说这些了。

    LeetCode #3 无重复字符的最长子串

    创建新列表new_list,储存每个字符能组成的最长字符串的长度。

    创建新字符串new_str,作为对比字符串。

    创建断点seat

    对比字符串长度lenght可以后面写出 new_list.append(len(new_str)),我这里就不改了。便于可读。

    算法部分。

    遍历一次字符串s,判断是否在对比字符串当中。

    不在的话,更新对比的字符串(新的对比字符串即为断点之后到s[i]),并将长度储存到new_list[i](表示s[i]可以组成无重复最长子串的长度)

    在的话,即对比字符串与即将加入的s[i]字符有重复。

    遍历s[i]之前的字符串,找的最后一个和s[i]重复的字符。

    更新seat,更新对比字符串,并将长度储存到new_list[i]之中。

    最后在对new_list进行排序,返回最大值即可。

    重复的代码有点多,为了简介可以创建一个新的函数更新数据。

    class Solution(object):
        def lengthOfLongestSubstring(self, s):
            """
            :type s: str
            :rtype: int
            """
            if s == '':
                return 0
            new_list = []
            new_str = ''
            length = 0
            seat = 0for i in range(len(s)):
                if s[i] not in new_str:   
                    new_str = s[seat:i+1]
                    length = len(new_str)
                    new_list.append(length)else :
                    for j in range(i):
                        if s[i] == s[j]:
                            seat = j + 1        
                    new_str = s[seat:i+1]
                    length = len(new_str)
                    new_list.append(length)
            new_list.sort()
            return new_list[-1]
  • 相关阅读:
    Java开发常用Util工具类
    冒泡排序
    EMQ 消息服务器
    将jar文件包打成exe文件
    mina框架搭建tcp服务器:编写自定义协议及编解码器
    SpringBoot中定时任务的设置
    SpringBoot项目+Shiro(权限框架)+Redis(缓存)集成
    计算两个时间之间的天数
    关于extern的使用
    ADC采样间隔问题+TRGO作为ADC的触发源头
  • 原文地址:https://www.cnblogs.com/mygzhh/p/9315793.html
Copyright © 2020-2023  润新知