力扣hot100——无重复字符最长子串
- IT业界
- 2025-08-28 20:36:02

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
解法思路:
// 滑动窗口:同侧出发,检测右指针元素,当set中没有这个元素就把右指针元素加入,同时右指针右移
// 如果存在则表示这个窗口(左右指针之间)出现重复,则要移动;窗口移动就是左指针右移动,同时删除set中左指针的元素
// 相当于换下一个子串;如果是字串的话,就删除右指针元素,相当于就是set中存储的是不连续的但是不同的字母
class Solution { public: int lengthOfLongestSubstring(string s) { // 滑动窗口:同侧出发,检测右指针元素,当set中没有这个元素就把右指针元素加入,同时右指针右移 // 如果存在则表示这个窗口(左右指针之间)出现重复,则要移动;窗口移动就是左指针右移动,同时删除set中左指针的元素 // 相当于换下一个子串;如果是字串的话,就删除右指针元素,相当于就是set中存储的是不连续的但是不同的字母 unordered_set<char> str_set; // 存储元素 int left = 0, right = 0 ,str_length = 0, result = 0; while(right < s.size()){ if(str_set.find(s[right]) != str_set.end()){ // 存在 str_set.erase(s[left]); // 移除这个元素 这里如果擦除右指针的元素则可用于查找最长 字串 ++left; --str_length; }else{ str_set.insert(s[right]); ++right; ++str_length; } result = max(str_length,result); } return result; } };力扣hot100——无重复字符最长子串由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“力扣hot100——无重复字符最长子串”