3. 无重复字符的最长子串——滑动窗口
创始人
2025-05-31 21:01:11

给定一个字符串 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) {const char* ch = s.c_str();int i = 0;int n = 0, max = 0;for(int j=0;j ch_set;while (ch[i] != '\0'){if (ch_set.find(ch[i]) != ch_set.end()){if (n > max){max = n;}n = 1;}else{n++;}ch_set.insert(ch[i]);i++;}if (max

示例模板:

class Solution {
public:int lengthOfLongestSubstring(string s) {vector m(128, 0);//ASCII范围0-127int ans = 0;int i = 0;//滑动窗口算法for (int j = 0; j < s.size(); j++) { //控制右指针i = max(i, m[s[j]]); //控制左指针m[s[j]] = j + 1; //重复了后,左指针的下一个位置ans = max(ans, j - i + 1); //j-i+1:子串长度}return ans;}
};

原理:

详细参照

相关内容

热门资讯

实测分享“开心联盟拼三张到底有... 您好:开心联盟拼三张这款游戏可以开挂,确实是有挂的,需要软件加微信【4194432】,很多玩家在开心...
重大通报“小程序麻将到底有挂没... 您好:小程序麻将这款游戏可以开挂,确实是有挂的,需要软件加微信【69174242】,很多玩家在小程序...
分享实测“乐达麻将是不是有挂没... 您好:乐达麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8700483】很多玩家在乐达麻将...
玩家实测“乐乐四川麻将 到底有... 您好:乐乐四川麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【6676724】很多玩家在这款...
玩家必看“全民十三水到底有没有... 您好:全民十三水这款游戏可以开挂,确实是有挂的,需要软件加微信【4194432】,很多玩家在全民十三...