1. 程式人生 > >Python 解leetcode:3. Longest Substring Without Repeating Characters

Python 解leetcode:3. Longest Substring Without Repeating Characters

bject tco 存在 leetcode left str block 出現 subst

  • 題目描述:求一個字符串的不含重復字符的最長連續子串的長度;

  • 思路:
  1. 使用一個哈希表保存字符出現的位置;
  2. 使用left和right分別表示子串的最左和最右字符的下標;
  3. 遍歷字符串,如果當前字符在哈希表中並且當前字符在哈希中的位置大於left,表明left和right之間存在和right索引上相同的字符,此時把left置為當前值在哈希表中的值;
  4. 把當前索引值+1,表示是第幾個字符,求出當前最大長度;
  5. 3-4步重復,直到獲得遍歷完成;

感覺這是個動態規劃題,暫時沒用動態規劃分析,後續再說。

class Solution(object):
    def lengthOfLongestSubstring(self
, s): """ :type s: str :rtype: int """ hashes = {} left, right, length = 0, 0, len(s) max_len = 0 while right < length: if hashes.get(s[right]) and hashes[s[right]] >= left: left = hashes[s[right]] hashes[s[right]] =
right + 1 max_len = max(max_len, right - left + 1) right += 1 return max_len

Python 解leetcode:3. Longest Substring Without Repeating Characters