leetcode 796. Rotate String | 796. 旋转字符串(KMP)
题目
https://leetcode.com/problems/rotate-string/
题解
左神讲的 KMP
class Solution {public boolean rotateString(String s, String goal) {if (s.length() != goal.length()) return false;return getIndexOf(s + s, goal) >= 0;}// KMPpublic static int getIndexOf(String s1, String s2) {if (s1 == null || s2 == null || s2.length() < 1 || s1.length() < s2.length()) {return -1;}char[] str1 = s1.toCharArray();char[] str2 = s2.toCharArray();int x = 0;int y = 0;// O(M) m <= nint[] next = getNextArray(str2);// O(N)while (x < str1.length && y < str2.length) {if (str1[x] == str2[y]) {x++;y++;} else if (next[y] == -1) { // y == 0x++;} else {y = next[y];}}return y == str2.length ? x - y : -1;}public static int[] getNextArray(char[] str2) {if (str2.length == 1) {return new int[]{-1};}int[] next = new int[str2.length];next[0] = -1;next[1] = 0;int i = 2; // 目前在哪个位置上求next数组的值int cn = 0; // 当前是哪个位置的值再和i-1位置的字符比较while (i < next.length) {if (str2[i - 1] == str2[cn]) { // 配成功的时候next[i++] = ++cn;} else if (cn > 0) {cn = next[cn];} else {next[i++] = 0;}}return next;}
}
leetcode 796. Rotate String | 796. 旋转字符串(KMP)相关推荐
- leetcode 767. Reorganize String | 767. 重构字符串(贪心+分桶+26路归并)
题目 https://leetcode.com/problems/reorganize-string/ 题解 分桶策略,和两个月之前做的 621.Task Scheduler 类似. 两个月之前看的答 ...
- leetcode 396. Rotate Function | 396. 旋转函数(错位相减)
题目 https://leetcode.com/problems/rotate-function/ 题解 参考了评论区 O(n)错位相减 的题解. class Solution {public int ...
- LeetCode 796. 旋转字符串
题目描述 796. 旋转字符串 解法: 首先,如果 sss 和 goalgoalgoal 的长度不一样,那么无论怎么旋转,sss 都不能得到 goalgoalgoal,返回 false\text{fa ...
- 62 旋转字符串(Rotate String)
文章目录 1 题目 2 解决方案 2.1 思路 2.2 时间复杂度 2.3 空间复杂度 3 源码 1 题目 题目:旋转字符串(Rotate String) 描述:给定一个字符串str和一个偏移量,根据 ...
- 【LeetCode】剑指 Offer 58 - II. 左旋转字符串
[LeetCode]剑指 Offer 58 - II. 左旋转字符串 文章目录 [LeetCode]剑指 Offer 58 - II. 左旋转字符串 一.字符串切片 二.列表遍历拼接 三.字符串遍历拼 ...
- 字符串专题-LeetCode:剑指 Offer 58 - II. 左旋转字符串、LeetCode 459.重复的子字符串、 代码思路和注意点
文章目录 一.剑指 Offer 58 - II. 左旋转字符串 二.LeetCode 459.重复的子字符串 一.剑指 Offer 58 - II. 左旋转字符串 思路: 预留出n个字符空间s.res ...
- 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串
LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...
- leetcode 左旋转字符串
剑指 Offer 58 - II. 左旋转字符串 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/zuo-xuan-z ...
- LeetCode 03: T58. 最后一个单词的长度(简单); 剑指 Offer 05. 替换空格(简单); 剑指 Offer 58 - II. 左旋转字符串(简单)
文章目录 T7: 58. 最后一个单词的长度(简单) 思路 解法: 双指针 T8: 剑指 Offer 05. 替换空格(简单) 思路 解法: replace T9: 剑指 Offer 58 - II. ...
最新文章
- Oracle字符串转BooIean,利用Java的多线程技术实现数据库的访问.pdf
- HTML 5中SEO可以用那些代码来做优化
- [译] 响应式 Web 应用(一)
- 工业触屏系统开发经验分享
- python建db文件_临时数据库之python用sqlite3模块操作sqlite
- iPhone 13系列又有新配色:猛男必看!
- c++ createtoolhelp32snapshot取进程路径_理解进程和线程
- QuickTime Player 如何开启倍速播放?
- zjufantasy.com开发日记(1)
- 使用BCDboot工具,修复windows 系统启动,双启动菜单丢失故障
- Springboot使用@Scheduled多节点启动时调度重复执行
- php.ini 验证码,php怎么解决验证码无法显示的问题
- 页面静态化的优点及缺点
- 一个让Google、Facebook、Amazon都羡慕的平台,为什么说阿里妈妈是数字营销的未来...
- 手指 (shou zhi)
- 设置border线条小于1px
- leaflet 画扇形
- Mac使用终端命令合并分区
- 社交网络分析的 R 基础:(三)向量、矩阵与列表
- 【galgame的解包教程】galgame解包及游戏基本信息
热门文章
- CodeForces - 1426F Number of Subsequences(dp)
- CodeForces - 1353D Constructing the Array(bfs)
- SPOJ - SUBLEX Lexicographical Substring Search(后缀自动机)
- SPOJ - TOURS Travelling tours(最小费用最大流)
- (转)网络流-最大流 SAP算法(模板)
- 16.枚举中的option和result.rs
- 最简单的基于FFMPEG的视频编码器(YUV编码为H.264)
- 【Boost】boost库中function的用法
- 透过汇编另眼看世界之多继承下的虚函数函数调用
- cocos2d-x初探学习笔记(6)--场景间切换效果