• 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 !!

  • 相关阅读:
    ASP.NET MVC学习笔记-----ActionInvoker
    quartz启动报错
    THUSC 2021 游记
    C++下随机数的生成
    友链
    memset一些技巧
    CodeForces Round #705 总结&题解
    php计算两坐标距离
    vue中使用keepAlive组件缓存遇到的坑
    vue 中 keepAlive
  • 原文地址:https://www.cnblogs.com/Shareishappy/p/7498601.html
Copyright © 2020-2023  润新知