zoukankan      html  css  js  c++  java
  • leetcode -- Algorithms -- 3_ Longest Substring Without Repeating Characters

    from itertools import permutations
    
    class Solution(object):
     
        def lengthOfLongestSubstring(self, s):
            temp = 0
            new_list = []
            new_string = []
            all_sub = []
            l = ''
    
            # get the new string without duplicate 
            for i in range(len(s)):
                if s[i] not in new_list:
                    new_list.append(s[i])
    
            if len(new_list) == 1:
                temp = 1
    
            else:
                for j in range (len(new_list),1,-1):
                    all_sub += list(permutations(new_list,j))  #get all the combinations with list
                    for k in range(len(all_sub)):
                        for e in range(len(all_sub[k])):
                            l += all_sub[k][e]
                        new_string.append(l)
                        l = ''
    
                        for f in range(len(new_string)):
                            try:
                                if new_string[f] in s:
                                    temp = len(new_string[f])
                                    raise ValueError
                            except ValueError:
                                    return temp 
    
                    all_sub = []
     
     
            return temp
            
            

    But failed with time exceed. The one with better solution is shown as below:

    class Solution:
        # @param {string} s
        # @return {integer}
        def lengthOfLongestSubstring(self, s):
            start_pos = 0
            current_pos = -1    # consider blank string case
            max_length = 0
            char_pos = {}
            for current_pos in range(len(s)):
                if s[current_pos] in char_pos and char_pos[s[current_pos]] >= start_pos :
                    max_length = max(max_length, current_pos - start_pos)
                    start_pos = char_pos[s[current_pos]] + 1
                char_pos[s[current_pos]] = current_pos
            return max(max_length, current_pos - start_pos + 1)

    Much simpler.

    Ich denke, dass muss ich härter arbeiten.  Nächste Station, Algorithms und Daten Strukturen !!

  • 相关阅读:
    Python 写入和读取Excel数据
    postman检查点详解
    禅道安装在不同系统下搭建步骤
    Linux下如何启动和关闭防火墙
    tomcat环境搭建
    Lniux下搭建LNMP环境
    Linux下搭建LAMP环境
    通过XAMPP导入WordPress网站建立个人博客
    在Windows下XAMPP的安装及使用教程
    linux 下安装配置xampp环境
  • 原文地址:https://www.cnblogs.com/Shareishappy/p/7498601.html
Copyright © 2011-2022 走看看