问题
# 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 # # 示例 1: # # 输入: "abcabcbb"# 输出: 3 # 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。# # # 示例 2: # # 输入: "bbbbb"# 输出: 1# 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。# # # 示例 3: # # 输入: "pwwkew"# 输出: 3# 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。# 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。# # Related Topics 哈希表 双指针 字符串 Sliding Window # 👍 4091 👎 0
代码
# leetcode submit region begin(Prohibit modification and deletion)class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ k = -1 # 记录起始位置 res = 0 # 记录长度 c_dict = {} # 记录下标 for i, c in enumerate(s): # 出现过,并且上次出现的位置在起始位置之前 if c in c_dict and c_dict[c] > k: k = c_dict[c] else: res = max(res, i - k) # 更新最后一次出现的下标 c_dict[c] = i return res# leetcode submit region end(Prohibit modification and deletion)if __name__ == '__main__': print(Solution().lengthOfLongestSubstring("tmmzuxt"))