您的位置:首页 > 新闻 > 热点要闻 > 建筑网站开发设计_网页电商设计_淘宝seo搜索引擎优化_平台推广引流怎么做

建筑网站开发设计_网页电商设计_淘宝seo搜索引擎优化_平台推广引流怎么做

2025/1/8 13:35:24 来源:https://blog.csdn.net/2301_79604637/article/details/144962607  浏览:    关键词:建筑网站开发设计_网页电商设计_淘宝seo搜索引擎优化_平台推广引流怎么做
建筑网站开发设计_网页电商设计_淘宝seo搜索引擎优化_平台推广引流怎么做

解题思路:看到重复用哈希表 本题用哈希表和滑动窗口滑动窗口用两个指针表示, 哈希表用来存储无重复的值,如果遍历哈希表找到了则说明这是重复的 需要移动这个窗口 滑动窗口向右移(用while循环),然后插入这个值,最终取最大的长度。

当右指针 right 遍历字符串时,检查当前字符 s[right] 是否已经在窗口中。然后在分为两种情况来考虑。

class Solution {
public:int lengthOfLongestSubstring(string s) {int sum = 0,left = 0;unordered_set<char> window;for(int right = 0; right < s.size();right++){while(window.find(s[right]) != window.end()){window.erase(s[left]);left++;}window.insert(s[right]);sum = max(sum,right-left+1);            }return sum;}
};

解题思路:

用滑动窗口来解决 然后返回滑动窗口左指针。首先遍历p的所有字母,保存在一个数组中(下标表示字母,值表示字母出现的次数),然后处理s的数组,判断左指针是否小于0 即确定窗口大小是否符合标准标准了,符合标准之后就是比较两个数组是否相等 相等就是放入结果中。(这里面要处理s数组中的值 当left走了就要减减)。

class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int>result;vector<int>conts(26);vector<int>contp(26);for(char c:p){contp[c-'a']++;}for(int right = 0; right < s.size();right++){conts[s[right]-'a']++;//右端字母进入窗口int left = right - p.size() + 1;if(left<0)continue;//窗口长度不足 即只有刚开始时有if(conts == contp){//s和p相等result.push_back(left);//左端下标加入答案}conts[s[left]-'a']--;//左端字母离开窗口}return result;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com