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

LeetCode第438题 - 找到字符串中所有字母异位词

题目

解答

class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> results = new ArrayList<>();Map<Character, Integer> needs = new HashMap<>();for (char c : p.toCharArray()) {needs.put(c, needs.getOrDefault(c, 0) + 1);}Map<Character, Integer> window = new HashMap<>();int left = 0;int right = 0;while (right < s.length()) {char c1 = s.charAt(right);++right;if (needs.containsKey(c1)) {window.put(c1, window.getOrDefault(c1, 0) + 1);}while (left < right && isValid(needs, window)) {if (right - left == p.length()) {results.add(left);}char c2 = s.charAt(left);++left;if (needs.containsKey(c2)) {window.put(c2, window.getOrDefault(c2, 0) - 1);}}}return results;}public boolean isValid(Map<Character, Integer> needs, Map<Character, Integer> window) {for (Map.Entry<Character, Integer> entry : needs.entrySet()) {if (!window.containsKey(entry.getKey())) {return false;}int value = window.get(entry.getKey());if (value < entry.getValue()) {return false;}}return true;}
}

总结
异位词可以理解为相同字母的排列。那么排列怎么理解呢?即相同的字母,相同的长度,因而并不需要把所有的排列都计算得到。

http://www.dtcms.com/a/358056.html

相关文章:

  • C++ 面试高频考点 力扣 34. 在排序数组中查找元素的第一个和最后一个位置 二分查找左右端点 题解 每日一题
  • 为什么vue3会移除过滤器filter
  • JUC并发编程10 - 内存(02) - volatile
  • 生成对抗网络(GAN):深度学习领域的革命性突破
  • DriveDreamer4D
  • YOLOv11 训练参数全解析:一文掌握 epochs、batch、optimizer 调优技巧
  • MySQL-事务(下)-MySQL事务隔离级别与MVCC
  • 检索优化-混合检索
  • 捡捡java——2、基础07
  • 使用git bash ,出现Can‘t get terminal settings: The handle is invalid. 的解决方法与思路
  • 数字人分身系统源码搭建与定制开发:核心技术解析与实践路径
  • 基于 Spring Boot3 的ZKmall开源商城分层架构实践:打造高效可扩展的 Java 电商系统
  • Kubernetes Dashboard 和 Rancher 功能对比以及详细安装步骤
  • MySQL数据库迁移到KingbaseES完整指南
  • 计算机视觉与深度学习 | ORB-SLAM3算法原理与Matlab复现指南
  • WebStorm无法识别@下的文件,但是可以正常使用
  • Redis 缓存热身(Cache Warm-up):原理、方案与实践
  • Linux命令学习:make,make install,modprobe,lsmod
  • CNB刷新EO缓存和插件化
  • Spring Cache实现简化缓存功能开发
  • 2025年职业发展关键证书分析:提升专业能力的路径选择
  • 漏洞挖掘-信息收集教程
  • CVPR深度学习论文创新合集拆解:模型训练速度算提升
  • 【CUDA进阶】MMA分析Bank Conflict与Swizzle(下)
  • 50.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--二期功能规划
  • 基于 MyBatis-Plus 拦截器实现锁定特殊数据(二)
  • CTE 的主要优势_以MySQL为例
  • 函数返回对象时的临时对象与移动赋值探析——深入理解优化策略
  • Time-MOE添加MLP分类头进行分类任务
  • 智能消防栓闷盖终端:让城市消防管理更智慧高效