给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
提示:
0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters
本来以为这题是最长公共子序列,没想到很简单。
# -*- coding: utf-8 -*- # @Time : 2022/7/6 14:51 # @Author : 凌贤文 # @Email : lingxw@zjnu.edu.cn class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ # 存储历史循环中最长的子串长度 max_len = 0 # 判断传入的字符串是否为空 if s is None or len(s) == 0: return max_len for i in range(len(s)): # 定义一个list,存储不重复的字符和字符所在的下标 ans = [s[i]] for j in range(i+1, len(s)): if s[j] in ans: max_len = max(len(ans), max_len) break else: ans.append(s[j]) max_len = max(len(ans), max_len) return max_len if __name__ == '__main__': sol = Solution() print(sol.lengthOfLongestSubstring("bbbbb")) print(sol.lengthOfLongestSubstring("eeydgwdykpv")) print(sol.lengthOfLongestSubstring("pwwkew")) print(sol.lengthOfLongestSubstring("abc"))