zoukankan      html  css  js  c++  java
  • 【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]
  • 相关阅读:
    NPOI操作 EXCEL文件
    mysql 临时变量,临时表
    ReSharper制作Template帮助我们快速输入代码
    临时表的实际运用
    如何避免项目重复循环引用
    mysql 5.1以上版本数据库 使用定时器功能(Event)
    Fedora12下装SMPlayer
    Fedora12启动时激活网卡并将firefox不设置为脱机工作
    设置yum
    Fedora 有用更新源上海交大的yum源
  • 原文地址:https://www.cnblogs.com/mygzhh/p/9315793.html
Copyright © 2011-2022 走看看