438. 找到字符串中所有字母异位词
时间:2023-03-18
本文章向大家介绍438. 找到字符串中所有字母异位词,主要内容包括题目描述、思路分析、代码参考、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。
异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。
输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。
思路分析
同样采用之前的滑动窗口的思路去解题
这次只有当符合条件时就将left的索引存入即可。
代码参考
const findAnagrams = function (s, p) {
const window = new Map()
const needs = new Map()
for (let i of p) needs.set(i, (needs.get(i) || 0) + 1)
let left = right = 0
let valid = 0
const res = []
while (right < s.length) {
const c = s[right]
right++
if (needs.has(c)) {
window.set(c, (window.get(c) || 0) + 1)
if (window.get(c) === needs.get(c)) valid++
}
while (right - left >= p.length) {
if (valid === needs.size) {
res.push(left)
}
const d = s[left]
left++
if (needs.has(d)) {
if (window.get(d) === needs.get(d)) valid--
window.set(d, window.get(d) - 1)
}
}
}
return res
}
原文地址:https://www.cnblogs.com/zx529/p/17229277.html
- HDUOJ1086You can Solve a Geometry Problem too
- Golang语言社区--【基础知识】常量
- HDUOJ------1058 Humble Numbers
- MySQL偏移量的一点分析
- HDUOJ------------1051Wooden Sticks
- HDUOJ-----2068RPG的错排
- MySQL创建表失败的问题
- HDUOJ-----1066Last non-zero Digit in N!
- Golang语言社区-【基础知识】切片
- Oracle和MySQL的高可用方案对比(一)
- golang取两个数字之间的随机数
- MySQL 5.5复制升级到5.7的一点简单尝试
- go语言读取CSV文件
- 从Baa开发中总结Go语言性能渐进优化
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php微信公众号开发之微信企业付款给个人
- PHP中抽象类,接口功能、定义方法示例
- YII分模块加载路由的实现方法
- PHP5.6读写excel表格文件操作示例
- php提取微信账单的有效信息
- PHP微信发送推送消息乱码的解决方法
- php实现微信企业付款到个人零钱功能
- 如何解决安装python3.6.1失败
- Python读取Excel数据并生成图表过程解析
- 解决keras模型保存h5文件提示无此目录问题
- 如何基于Python代码实现高精度免费OCR工具
- python怎么调用自己的函数
- Python datetime模块使用方法小结
- PHP hebrev()函数用法讲解
- PHP hex2bin()函数用法讲解