【leetcode】字符串(KMP、滑动窗口)
参考自 代码随想录
Java、Python的String字符串是不可变的
【参考:java 字符串 复制_Java字符串复制_cunchi4221的博客-CSDN博客】
请注意,对于任何不可变的对象,我们都可以将一个变量直接分配(b=a)
给另一个变量。 它不仅限于String对象。
但是,如果要将可变对象复制到另一个变量,则应执行Deep copy 。
KMP
实例:28. 实现 strStr - 力扣(LeetCode)
参考:有限状态机之 KMP 字符匹配算法 :: labuladong的算法小抄
用一个二维的 dp 数组(但空间复杂度还是 O(M)),重新定义其中元素的含义.
视频必看
参考:帮你把KMP算法学个通透!(理论篇)_哔哩哔哩_bilibili
参考:帮你把KMP算法学个通透!(求next数组代码篇)_哔哩哔哩_bilibili
前缀表不减一也不右移 容易理解
haystack为文本串, needle为模式串。
- 初始化:
定义两个指针i 和 j,j 指向前缀
起始位置,i 指向后缀
起始位置。
next[j]
就是记录着下标 j(包括j)之前的子串的最长相同前后缀的长度。
处理前后缀不相同的情况
遍历模式串s的循环下标 i 要从 1开始处理前后缀相同的情况
那么就同时向后移动i 和j 说明找到了相同的前后缀,同时还要将j(前缀的长度)赋给next[i], 因为next[i]要记录相同前后缀的长度。
public void getNext(int[] next, String s) {int j = 0;next[0] = 0;for (int i = 1; i < s.length(); i++) {while (j > 0 && s.charAt(i) != s.charAt(j)) j = next[j - 1]; // 回退if (s.charAt(i) == s.charAt(j)) j++;next[i] = j; }}
参考:多图预警
【leetcode】字符串(KMP、滑动窗口)相关推荐
- LeetCode 1839. 所有元音按顺序排布的最长子字符串(滑动窗口)
文章目录 1. 题目 2. 解题 1. 题目 当一个字符串满足如下条件时,我们称它是 美丽的 : 所有 5 个英文元音字母('a' ,'e' ,'i' ,'o' ,'u')都必须 至少 出现一次. 这 ...
- 【LeetCode笔记】76. 最小覆盖子串(字符串、滑动窗口)
文章目录 题目描述 思路 && 代码 二刷 最近一直在充电基础知识.维护 leetcode 总结博客 今天继续摸一摸新题目吧- 题目描述 感觉和 03. 无重复的最长子串 有点像,都是 ...
- 【LeetCode笔记】438. 找到字符串中所有字母异位词(Java、字符串、滑动窗口)
题目描述 因为自己写的复杂度已经到了 O(n),就没有再参考题解的优化了 更新:滑动窗口方法 思路 & 代码 用一个 int[ ] count 来存储当前判断子串的各字母出现次数 getCou ...
- LeetCode实战:滑动窗口最大值
题目英文 Given an array nums, there is a sliding window of size k which is moving from the very left of ...
- [单调栈/差分/尺取/单调队列]Exercise Week5 A最大矩形+B魔法猫+C平衡字符串+D滑动窗口
目录 A.[单调栈]最大矩形 题意 样例 思路 总结 代码 B.[差分]TT's Magic Cat 题意 样例 思路 总结 代码 C.[尺取]平衡字符串 题意 样例 思路 总结 代码 D.[单调队列 ...
- leetcode算法题--滑动窗口的最大值
原题链接:https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/ 滑动窗口: vector<int> ...
- LeetCode 1234. 替换子串得到平衡字符串(滑动窗口)
1. 题目 有一个只含有 'Q', 'W', 'E', 'R' 四种字符,且长度为 n 的字符串. 假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就是一个「平衡字符串」. 给你一个这样的字 ...
- LeetCode解题思路—滑动窗口法
LeetCode上的题有上千道,经常是做了后面的忘了前面的,如果能够找出这些题型的共有规律,可以事半功倍 建议将思维导图保存下来观看,或点击这里在线观看
- 滑动窗口—至多包含两个不同字符的最长子串(leetcode 159)
题目描述 给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度. 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "ec ...
- 滑动窗口—满足XX条件的最长子串
目录 题目一:3. 无重复字符的最长子串 题目二:159. 至多包含两个不同字符的最长子串 题目三:159. 至多包含两个不同字符的最长子串 题目一:3. 无重复字符的最长子串 问题描述: 给定一个字 ...
最新文章
- Quake3服务器客户端架构参考
- VTK:可视化之Blow
- ABI(Application Binary Interface)
- JQuery快速入门-选择器
- C++ 数组在内存中的分配
- Css3之基础-5 Css 背景、渐变属性
- ubuntu 16.04 安装samba
- 腾讯区块链专利申请量排名全国第一;摩拜超20.56万单车被破坏;Nginx 1.17.7发布 | 极客头条...
- 在ASP.NET MVC中进行TDD开发
- 大数据开发笔记(四):Hive数仓调优
- Mac Pro 使用 ll、la、l等ls的别名命令
- 一个很好的makefile例子(经典)
- w10系统怎样打开计算机策略,Win10系统组策略在哪里打开
- python修改pdf内容_如何编辑pdf文件,替换其数据?
- iOS系统开发入门至精通学习指南
- nw.js html5,nw.js 如何使用?
- 21年杭州云栖大会参会总结-安全相关内容
- python鼠标监听_用Python监听鼠标和键盘事件
- IDEA 2021的下载与安装
- GMAP一款比对工具用于ALLHiC构建等位基因表