滑动窗口。

1456 定长子串中元音的最大数目

采用滑动窗口。每次移动一个位置,判断当前窗口内的子串内目标元素的个数,若比之前更大就更新结果。

如何判断是否更新结果?也即,如何判断当前窗口内所含目标元素个数,是否为遍历到这个窗口为止的最大值?

对于下图的字符串 abci,假如我们已经计算出了子串 abc 的元音个数,那么从子串 abc 到子串 bci,只需要考虑移除(离开窗口)的字母 a 是不是元音,以及添加(进入窗口)的字母 i 是不是元音即可,因为中间的字母 b 和 c 都在这两个子串中。

无非就这几种情况:

  • a 是,i 不是,则下一个窗口内的子串必不符合
  • a 是,b 也是,则下一个窗口内的子串必不符合(与当前最高记录个数相同)
  • a 不是,i是,则下一个窗口内的串必然刷新答案
  • a不是,i 不是,则下一个窗口内的子串必不符合(与当前最高记录个数相同)
相关推荐
芥子沫35 分钟前
Java常见排序算法及代码实现
java·算法·排序算法
alien爱吃蛋挞1 小时前
正则表达式(竞赛篇)
java
怪咖码农2 小时前
Java分布式幂等性怎么设计?
java·分布式·spring cloud
bestwinner2 小时前
java 集合取交集
java·开发语言
丁总学Java3 小时前
使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)安装适配 Java 8 的 Maven
java·maven·sdkman
nfgo3 小时前
在 ARM64 架构系统离线安装 Oracle Java 8 全流程指南
java·oracle·架构
全栈Blue3 小时前
记录一次报错:spring security 403报错
java·后端·spring
m0_748230943 小时前
Spring Boot框架知识总结(超详细)
java·spring boot·后端
众智创新团队4 小时前
如何使用Java语言在Idea和Android中分别建立服务端和客户端实现局域网聊天
android·java·intellij-idea