zoukankan      html  css  js  c++  java
  • leetcode 003

    3. Longest Substring Repeating Character

    Difficulty:Medium

    The link:

    Description :

    Given a string, find the length of the longest substring without repeating character.
    
    Example 1:
    
    Input: "abcabcbb"
    Output: 3 
    Explanation: The answer is "abc", with the length of 3. 
    
    Example 2:
    
    Input: "bbbbb"
    Output: 1
    Explanation: The answer is "b", with the length of 1.
    
    Example 3:
    
    Input: "pwwkew"
    Output: 3
    Explanation: The answer is "wke", with the length of 3. 
                 Note that the answer must be a substring, "pwke" is a subsequence and not a substring.
    

    Solutions:

    Solution A:

    (* 为解决) 想实现KMP算法  KMP 介绍

    class Solution:
        def lengthOfLongestSubstring(self, s):
            """
            :type s: str
            :rtype: int
            """
            look_up = {}
            for i in range(len(s)):
                if s[i] not in look_up:
                    look_up[s[i]] = i
                else:
                    # l 现在字典的长度
                    l = len(look_up)
                    # m 出现重复字母位置
                    m = look_up[s[i]]
                    # str01  字符串切片
                    str01 = s[m:l]
                    for i, item in enumerate(str01):
                        if s[i] not in look_up:
                            i = m + l
                            l = l + 1        
            return l
    

    Solution B:

    dict,get() The method get() returns a value for the given key. If key is not available then returns default value None.

    dict.get(key, default = None)
    
    • key - This is the Key to be searched in the dictionary.
    • default - This is the Value to be returned in case key does not exist.
    class Solution:
        def lengthOfLongestSubstring(self, s):
            """
            :type s: str
            :rtype: int
            """
            l, start, n = 0, 0, len(s)
            maps = {}
            for i in range(n):
                start = max(start, maps.get(s[i], -1)+1)
                l = max(l, i - start+1)
                maps[s[i]] = i
            return l
    
  • 相关阅读:
    SEUOJ上几道水题
    项目计划
    软件工程03
    件工程个人作业02
    软件工程个人作业01
    学习进度条
    软件工程第一次博客
    异常分析
    多态
    Java覆盖
  • 原文地址:https://www.cnblogs.com/Mr0wang/p/9721570.html
Copyright © 2011-2022 走看看