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

  • 相关阅读:
    制作一个漂亮的表格
    模版语言
    Django 学习
    linux系统服务名称
    CentOS下netstat + awk 查看tcp的网络连接状态
    Python的MySQLdb模块安装
    shellinabox安装
    堡垒机 paramiko 自动登陆代码
    堡垒机 paramiko代码
    Paramiko 模块使用
  • 原文地址:https://www.cnblogs.com/Shareishappy/p/7498601.html
Copyright © 2011-2022 走看看