设计一个简单的旅游网站,wordpress男人福利模板,北京微信网站建设费用,wordpress渐隐渐现页面过渡效果题目链接
力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析
我们需要找的是含重复元素的最长子串#xff0c;当然直接暴力求解固然简单。但是可能引发的情况是超时#xff0c;而且面试官想看到的也不是让你去暴力解决这类问题。因此我们使…题目链接
力扣LeetCode官网 - 全球极客挚爱的技术成长平台 题目解析
我们需要找的是含重复元素的最长子串当然直接暴力求解固然简单。但是可能引发的情况是超时而且面试官想看到的也不是让你去暴力解决这类问题。因此我们使用哈希滑动窗口的思想来解决。
滑动窗口哈希
使用哈希表的缘故是更好的判断该字符是否是重复的元素。
将当前元素进行进窗口如果该元素是重复的元素。那么从该窗口的左边进行出窗口直到该元素不是重复的元素为止每次进窗口之后统计当前无重复子串的长度求出最长的长度并且返回代码如下(含有详细注释)。
代码
class Solution
{
public:int lengthOfLongestSubstring(string s) {int ns.size();// 注意字符的范围定义哈希表int hash[128]{0};int ret0;for(int left0,right0;rightn;right){// 进窗口hash[s[right]];// 若有重复元素则进入循环while(hash[s[right]]1){// 最左边元素出窗口hash[s[left]]--;// 更新窗口left;}// 走到这里right与left之间组成的字符串肯定没有重复元素// 计算长度retmax(ret,right-left1);}return ret;}
};