zoukankan      html  css  js  c++  java
  • 无重复字符的最长字符串

    题目:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

    法一:

    def lengthOfLongestSubstring(s):
        listi = []
        if len(s) in [0,1]:
            return len(s)
        else:
            for i in range(len(s)):
                j = i
                while j < len(s)-1:
                    j = j + 1
                    r = s[i:j]
                    if s[j] in r:
                        maxlen = len(r)
                        listi.append(maxlen)
                        break
                    else:
                        maxlen = len(r)+1
                        listi.append(maxlen)
            return max(listi)
    
    if __name__ == '__main__':
        s = ""
        print(lengthOfLongestSubstring(s))

    思路: 无脑遍历,( 0 or 1)不好用,不知道为什么

    给变量起名字时不要起list,max和函数名一致的,否则报错

    法二:

    def lengthOfLongestSubstring(s):
        """
        :type s: str
        :rtype: int
        """
        start = maxLength = 0
        usedChar = {}
        for index, char in enumerate(s):
            if char in usedChar and start <= usedChar[char]:
                start = usedChar[char] + 1   # 将值加1
            else:
                maxLength = max(maxLength, index - start + 1)
            usedChar[char] = index
        return maxLength
    
    if __name__ == '__main__':
        s = 'abcdecb'
        print(lengthOfLongestSubstring(s))

    思路:方法比较难

    不断判断新的元素是否是已经存在于usedChar字典中,若存在,则将start指向已经存在的位置,继续遍历,否则判断长度,求max




  • 相关阅读:
    关于进程间通信
    ipc (进程间通信
    为什么需要进程间通信??
    重载、重写、覆盖
    conerstone代码回滚
    重载、重写、符号冲突、扩展
    UICollectionView(一)基本概念
    UICollectionViewFlowLayout & UICollectionViewDelegateFlowLayout
    UICollectionView框架总结
    UICollectionView
  • 原文地址:https://www.cnblogs.com/xxswkl/p/10811602.html
Copyright © 2011-2022 走看看