当前位置: 首页> 健康> 美食 > 小蝌蚪幸福宝入口导航_在线网站系统客服_在线网站流量查询_网站排名优化软件有哪些

小蝌蚪幸福宝入口导航_在线网站系统客服_在线网站流量查询_网站排名优化软件有哪些

时间:2025/7/12 14:50:11来源:https://blog.csdn.net/2302_80378107/article/details/146107346 浏览次数:0次
小蝌蚪幸福宝入口导航_在线网站系统客服_在线网站流量查询_网站排名优化软件有哪些

1.题目

题目分析:

题目会给俩个数组,要在大的数组里面去找跟小的数组元素种类一样的子数组,并返回大数组中满足情况的第一个元素地址,就像例子1的abc和cba元素种类一样,就返回第一个元素的地址就行

2.算法原理

题目给定子数组大小是一定的,也就是说在大数组遍历时,就会有个数限制,因为是俩个边界且移动方向是一致的,就可以用滑动窗口,用一个数来计数边界内种类个数,一开始先移动n(限制的种类数大小)下,然后接下来就是n+1个,就要排除元素,那么排除元素还需要判断排的这个元素是否是唯一,如果是唯一就要把种类个数-1,不是就不该变种类个数,然后要插入结果就需要种类数量一致且边界大小一致才行,插入元素要判断是否是第一个进来的,是第一个就要把种类数+1,不然就不变。

排除元素需要注意是先判断删除的元素是否唯一,如果是的话就把种类个数-1,然后把元素排出,如果是先-1的话,再去判断就会导致把元素种类-1,但是它是先-1才变成唯一的,删除后还有一个存在,而就把种类-1了就是错误的。

3.代码实现

class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int> ret;int hash1[26]={0};int n=p.size();for(char s:p) hash1[s-'a']++;int count=0;int hash2[26]={0};for(int left=0, right=0;right<s.size();right++){char in=s[right];if(++hash2[in-'a']<=hash1[in-'a']) count++;if(right-left+1>n){char out=s[left++];if(hash2[out-'a']--<=hash1[out-'a']) count--;}if(count==n) ret.push_back(left);}return ret;}
};

关键字:小蝌蚪幸福宝入口导航_在线网站系统客服_在线网站流量查询_网站排名优化软件有哪些

版权声明:

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

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

责任编辑: