给定一个字符串 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
由英文字母、数字、符号和空格组成class Solution { public: int lengthOfLongestSubstring(string s){ int end = 0; int start = 0; int length = s=="" ? 0:1; vector<int> bucket(128, 0); for (; end<s.length() ; end++) { if (bucket[s[end]] > start) { length = (end-start) > length ? (end-start) : length; start = bucket[s[end]]; } bucket[s[end]] = end + 1; } length = (end-start) > length ? (end-start) : length; return length; } };
4 ms 98.28%
7.8 MB 82.5%