无重复字符的最长子串
题目链接 3. 无重复字符的最长子串
给定一个字符串
s
,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:
输入: s = “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:
输入: s = “pwwkew”
输出: 服务器托管网3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,”pwke” 是一个子序列,不是子串。
题目解释
在这个字符串里面找一个子数组,我们保证子数组的元素都不重复,返回我们子数组里面的最长的长度.
算法原理
这里我们一分析,我们就可以使用暴力解法,拿到所有的子数组,然后判断.但是这里我们可以使用滑动窗口.既然使用滑动窗口,那么我们就需要一个判断依据,下面就是
收集滑动窗口里面所有的元素,拿到一个新的字符和这些字符判断.
细节补充
这个题目写的比较粗糙,毕竟大家非常熟悉双指针了.大家看代码,我在代码里面写一些注释方面大家理解.
代码编写
class Solution
{
public:
int lengthOfLongestSubstring(string s)
{
int left = 0服务器托管网;
int right = 0;
unordered_map m;
int result = 0;
for (; right 1) // 判断
{
m[s[left++]]--; // 出窗口
}
result = max(result, right - left + 1); // 更新结果
}
return result;
}
};
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net