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

力扣hot100 找到字符串中所有字母异位词 滑动窗口 双指针 一题双解

Problem: 438. 找到字符串中所有字母异位词
在这里插入图片描述

文章目录

  • 思路
  • 滑动窗口 + 数组
  • 滑动窗口 + 双指针

思路

👩‍🏫 参考题解

滑动窗口 + 数组

在这里插入图片描述

⏰ 时间复杂度: O ( n ) O(n) O(n)
🌎 空间复杂度: O ( 1 ) O(1) O(1)

class Solution {
//	滑动窗口 + 数组public List<Integer> findAnagrams(String s, String p){int n = s.length();int m = p.length();List<Integer> ans = new ArrayList<>();if (n < m)return ans;int[] pp = new int[26];int[] ss = new int[26];for (int i = 0; i < m; i++){pp[p.charAt(i) - 'a']++;ss[s.charAt(i) - 'a']++;}if (Arrays.equals(pp, ss))ans.add(0);for (int i = m; i < n; i++){ss[s.charAt(i - m) - 'a']--;ss[s.charAt(i) - 'a']++;if (Arrays.equals(ss, pp))ans.add(i - m + 1);}return ans;}
}

滑动窗口 + 双指针

在这里插入图片描述

⏰ 时间复杂度: O ( n ) O(n) O(n)
🌎 空间复杂度: O ( 1 ) O(1) O(1)

class Solution {public List<Integer> findAnagrams(String s, String p){int n = s.length();int m = p.length();List<Integer> ans = new ArrayList<>();if (n < m)return ans;int[] pp = new int[26];// 目标串的字符数int[] win = new int[26];// 当前窗口拥有的字符数for (int i = 0; i < m; i++)pp[p.charAt(i) - 'a']++;int l = 0;for (int r = 0; r < n; r++){int rightIdx = s.charAt(r) - 'a';win[rightIdx]++;// 加入r字符导致 当前窗口字符个数超出范围,只能移除左边的字符while (win[rightIdx] > pp[rightIdx]){int leftIdx = s.charAt(l) - 'a';win[leftIdx]--;l++;}
//			注意:走到这,只有 当前窗口内字符数不够 这种情况,上边的while循环保证了当前的窗口的每个字符肯定 <= 目标数if (r - l + 1 == m)// 只要当前窗口大小 == 目标串长度ans.add(l);}return ans;}
}
http://www.lryc.cn/news/285201.html

相关文章:

  • PG DBA培训21:PostgreSQL性能优化之基准测试
  • 使用excel从1-2048中随机选择1个整数,并展示与其对应的单词
  • c++可调用对象、function类模板与std::bind
  • 【高危】Apache Solr 环境变量信息泄漏漏洞
  • Python中的卷积神经网络(CNN)入门
  • vulnhub靶机HotelWW
  • ArcGIS Pro 标注牵引线问题
  • Java8的Stream最佳实践
  • Spark SQL函数定义
  • 触摸屏监控双速电动机-PLC I/O电路设计
  • idea中使用git提交代码报 Nothing To commit No changes detected
  • 基于长短期神经网络的回归分析,基于LSTM的回归预测
  • mac查看maven版本报错:The JAVA_HOME environment variable is not defined correctly
  • 蓝桥杯省赛无忧 编程9
  • Spring data都包含哪些内容
  • unity 利用Graphics.Blit来制作图片效果
  • Linux ---- 小玩具
  • 练习题 有奖问答
  • php 文件操作
  • Next-GPT: Any-to-Any Multimodal LLM
  • Angular系列教程之MVC模式和MVVM模式
  • windows虚拟主机和linux虚拟主机的区别有哪些?
  • 微信小程序(七)navigator点击效果
  • 腾讯云服务器价格查询,2024更新
  • 更适合3D项目的UI、事件交互!纯国产数字孪生引擎持续升级中!!!
  • OpenCV-Python(47):支持向量机
  • Centos 8 安装 Elasticsearch
  • Qt5.15.2中加入图片资源
  • 大数据导论(3)---大数据技术
  • Vue-Clipboard3:轻松实现复制到粘贴板功能