当前位置: 首页 > news >正文

2025年11月25日

2025年11月25日

一.滑动窗口专题:

image

image

class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int> ans; // 记录满足条件的起点。//异位词就是不考虑字母顺序,所以只需要统计每个字符串内个字母个数,如果相同则是异位词array<int, 26> cnt_s;//统计s中子串array<int, 26> cnt_p;//统计p串,滑动窗口for (int i = 0; i < p.size(); i++) {cnt_p[p[i] - 'a']++;}for (int right = 0; right < s.size(); right++) { // 滑动窗口右边界int left = right - p.size() + 1;//左边界cnt_s[s[right] - 'a']++;if (left < 0) { // 窗口大小未达到p的大小continue;}if (cnt_p == cnt_s) {ans.push_back(left);}cnt_s[s[left] - 'a']--;//窗口满了就退出左边一格}return ans;}
};

用array不直接用数组例如int a[ ]因为不能直接比较两个数组是否一样,所以用array 

 

image

image

方法一:暴力-->超时

class Solution {public:int lengthOfLongestSubstring(string s) {int n=s.size();vector<vector<bool>>flag;//flag[i][j]=true表示s[i->j]是无重复字符的,利用动态规划思想for(int i=0;i<n;i++){vector<bool>a;for(int j=0;j<n;j++){a.push_back(false);//默认都是重复字符}flag.push_back(a);}for(int i=0;i<n;i++){flag[i][i]=true;//单个字符一定不重复}int ans=0;for(int i=0;i<n;i++){for(int j=i;j<n;j++){bool f=true;for(int k=j-1;k>=i;k--){if(s[k]==s[j]){f=false;}}//如果无重复就更新if(j==0)flag[i][j]=true;else if(flag[i][j-1]&&f==true)    flag[i][j]=true;if(flag[i][j]==true){//更新答案ans=max(ans,j-i+1);}}}return ans;}
};

方法二:滑动窗口+哈希表

对于无重复字符串可采用哈希表数据结构!

 

class Solution {public:int lengthOfLongestSubstring(string s) {unordered_set<char>a;//哈希表int ans=0;int right=-1;//右边界for(int i=0;i<s.size();i++){if(i!=0)   {a.erase(s[i-1]);//滑动窗口左边界向右收缩一格,从哈希表里删除s[i-1]}//以当前i为左边界,右边界right一直向右直到出现重复元素while(right+1<s.size()&&a.count(s[right+1])==0){a.insert(s[right+1]);right++;}ans=max(ans,right-i+1);}return ans;}
};

 

http://www.rkmt.cn/news/60772.html

相关文章:

  • 2025年节油的轮胎推荐:官方TOP10低滚阻榜单揭秘
  • 实用指南:云计算学习(三)——子网划分
  • 基于 Vue3 及TypeScript 项目后的总结 - 详解
  • 慢就是快 用在生活中
  • 计你太美
  • 2025年大众帕萨特更换轮胎推荐:官方权威指南深度解析
  • 2025-11-25 ZYZ28-NOIP模拟赛-Round9 hetao1733837的record
  • 详细介绍:Python之aedev-setup-project包语法、参数和实际应用案例
  • leetcode238. 除自身以外数组的乘积 未解决
  • python environment settings
  • 有限元技巧核心原理与学习路径:从一维基础到多维拓展(七步流程)
  • 实用指南:面向高并发场景的舆情处置技术实践——基于字节探索Infoseek的架构拆解
  • sg 多堆的取石子游戏
  • Day48(18)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management
  • 日总结 31
  • 102302114_比山布努尔兰_作业3
  • 第四十八篇
  • Django 用户认证流程详解:从原理到搭建
  • i.MX 6ULL复位管脚
  • [豪の算法奇妙冒险] 代码随想录算法训练营第六天 | 242-有效的字母异位词、349-两个数组的交集、202-快乐数、1-两数之和
  • 棋盘 就是最简单的nim
  • 会不会是遗嘱呢……
  • [模拟赛]拆分(div)
  • 详细介绍:【微服务组件】Springboot结合Dubbo实现RPC调用
  • 怎么理解np.array([10, 20]).reshape(-1, 1)?
  • 深入解析:网络安全等级保护测评高风险判定实施指引(试行)--2020与2025版对比
  • AI学习机值不值?2025年实测最有用的AI学习机品牌推荐!
  • 2025年11月机器人油脂公司推荐榜:精选五家优质供应商对比分析
  • hikivision 考勤机数据提取
  • [python] Python数据类使用指北