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

Java | Leetcode Java题解之第438题找到字符串中所有字母异位词

题目:

题解:

class Solution {public List<Integer> findAnagrams(String s, String p) {int sLen = s.length(), pLen = p.length();if (sLen < pLen) {return new ArrayList<Integer>();}List<Integer> ans = new ArrayList<Integer>();int[] count = new int[26];for (int i = 0; i < pLen; ++i) {++count[s.charAt(i) - 'a'];--count[p.charAt(i) - 'a'];}int differ = 0;for (int j = 0; j < 26; ++j) {if (count[j] != 0) {++differ;}}if (differ == 0) {ans.add(0);}for (int i = 0; i < sLen - pLen; ++i) {if (count[s.charAt(i) - 'a'] == 1) {  // 窗口中字母 s[i] 的数量与字符串 p 中的数量从不同变得相同--differ;} else if (count[s.charAt(i) - 'a'] == 0) {  // 窗口中字母 s[i] 的数量与字符串 p 中的数量从相同变得不同++differ;}--count[s.charAt(i) - 'a'];if (count[s.charAt(i + pLen) - 'a'] == -1) {  // 窗口中字母 s[i+pLen] 的数量与字符串 p 中的数量从不同变得相同--differ;} else if (count[s.charAt(i + pLen) - 'a'] == 0) {  // 窗口中字母 s[i+pLen] 的数量与字符串 p 中的数量从相同变得不同++differ;}++count[s.charAt(i + pLen) - 'a'];if (differ == 0) {ans.add(i + 1);}}return ans;}
}
http://www.lryc.cn/news/449889.html

相关文章:

  • springboot整合MybatisPlus+MySQL
  • 【MySQL】视图、用户和权限管理
  • Linux基础(五):linux文件种类与扩展名
  • C语言-c语言组成
  • 编程题 7-13 日K蜡烛图【PAT】
  • iOS开发工程师面试
  • 无人机避障—— 激光雷达定高北醒TF03-UART(二)
  • 在虚幻引擎中实现Camera Shake 相机抖动/震屏效果
  • SQL Server的文本和图像函数
  • PN8034非隔离12V300MA,SOP7/DIP7开关电源芯片
  • VMware下Ubuntu找不到共享文件夹
  • 银河麒麟桌面操作系统V10登录闪退问题解决
  • 【Git原理与使用】分支管理
  • Linux操作系统分析实验-多线程与内核模块编程,实验一
  • AI绘画Stable Diffusion人物背景替换实操教程,让创意无限延伸
  • linux环境oracle11.2.0.4打补丁(p31537677_112040_Linux-x86-64.zip)
  • 华为 HCIP-Datacom H12-821 题库 (29)
  • MySQL 为什么一定要有一个主键
  • Pycharm 本地搭建 stable-diffusion-webui
  • python/爬虫技术/lxml工具介绍/XML和HTML解析
  • Kafka技术详解[5]: 集群启动
  • 记一次教学版内网渗透流程
  • [Python学习日记-31] Python 中的函数
  • Kafak入门技术详解
  • X-Spreadsheet:Web端Excel电子表格工具库
  • 为什么很多APP取消网页版
  • Kubernetes高级功能
  • (作业)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第1关Linux 基础知识
  • 【python爬取网页信息并存储】
  • TCP、UDP