leetcode python - Longest Substring Without Repeating Characters

891 ワード

 
  
# Given a string, find the length of the longest substring without repeating characters.
#
# Examples:
#
# Given "abcabcbb", the answer is "abc", which the length is 3.
#
# Given "bbbbb", the answer is "b", with the length of 1.
#
# Given "pwwkew", 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.
#
class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        i,j,k = 0,0,0
        map = {}
        while i < len(s) and j < len(s):
            if map.has_key(s[j]):
                i = max(i, map[s[j]] + 1)
            map[s[j]] = j
            k = max(k, j - i + 1)
            j += 1
        return k