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

  • 相关阅读:
    最近学习的 Node.js 之 http
    最近学习的 Node.js 基础:安装、环境配置、forever
    关于MySQL5.7 几天的总结(简单分区 & json类型)
    不会点git真不行啊.
    python爬虫基础_scrapy
    python爬虫基础_webwechat
    python爬虫基础_requests和bs4
    python之django母板页面
    python之django基础
    python网络之web框架
  • 原文地址:https://www.cnblogs.com/Shareishappy/p/7498601.html
Copyright © 2011-2022 走看看