题目

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)相关推荐

  1. leetcode 767. Reorganize String | 767. 重构字符串(贪心+分桶+26路归并)

    题目 https://leetcode.com/problems/reorganize-string/ 题解 分桶策略,和两个月之前做的 621.Task Scheduler 类似. 两个月之前看的答 ...

  2. leetcode 396. Rotate Function | 396. 旋转函数(错位相减)

    题目 https://leetcode.com/problems/rotate-function/ 题解 参考了评论区 O(n)错位相减 的题解. class Solution {public int ...

  3. LeetCode 796. 旋转字符串

    题目描述 796. 旋转字符串 解法: 首先,如果 sss 和 goalgoalgoal 的长度不一样,那么无论怎么旋转,sss 都不能得到 goalgoalgoal,返回 false\text{fa ...

  4. 62 旋转字符串(Rotate String)

    文章目录 1 题目 2 解决方案 2.1 思路 2.2 时间复杂度 2.3 空间复杂度 3 源码 1 题目 题目:旋转字符串(Rotate String) 描述:给定一个字符串str和一个偏移量,根据 ...

  5. 【LeetCode】剑指 Offer 58 - II. 左旋转字符串

    [LeetCode]剑指 Offer 58 - II. 左旋转字符串 文章目录 [LeetCode]剑指 Offer 58 - II. 左旋转字符串 一.字符串切片 二.列表遍历拼接 三.字符串遍历拼 ...

  6. 字符串专题-LeetCode:剑指 Offer 58 - II. 左旋转字符串、LeetCode 459.重复的子字符串、 代码思路和注意点

    文章目录 一.剑指 Offer 58 - II. 左旋转字符串 二.LeetCode 459.重复的子字符串 一.剑指 Offer 58 - II. 左旋转字符串 思路: 预留出n个字符空间s.res ...

  7. 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

    LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...

  8. leetcode 左旋转字符串

    剑指 Offer 58 - II. 左旋转字符串 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/zuo-xuan-z ...

  9. LeetCode 03: T58. 最后一个单词的长度(简单); 剑指 Offer 05. 替换空格(简单); 剑指 Offer 58 - II. 左旋转字符串(简单)

    文章目录 T7: 58. 最后一个单词的长度(简单) 思路 解法: 双指针 T8: 剑指 Offer 05. 替换空格(简单) 思路 解法: replace T9: 剑指 Offer 58 - II. ...

最新文章

  1. Oracle字符串转BooIean,利用Java的多线程技术实现数据库的访问.pdf
  2. HTML 5中SEO可以用那些代码来做优化
  3. [译] 响应式 Web 应用(一)
  4. 工业触屏系统开发经验分享
  5. python建db文件_临时数据库之python用sqlite3模块操作sqlite
  6. iPhone 13系列又有新配色:猛男必看!
  7. c++ createtoolhelp32snapshot取进程路径_理解进程和线程
  8. QuickTime Player 如何开启倍速播放?
  9. zjufantasy.com开发日记(1)
  10. 使用BCDboot工具,修复windows 系统启动,双启动菜单丢失故障
  11. Springboot使用@Scheduled多节点启动时调度重复执行
  12. php.ini 验证码,php怎么解决验证码无法显示的问题
  13. 页面静态化的优点及缺点
  14. 一个让Google、Facebook、Amazon都羡慕的平台,为什么说阿里妈妈是数字营销的未来...
  15. 手指 (shou zhi)
  16. 设置border线条小于1px
  17. leaflet 画扇形
  18. Mac使用终端命令合并分区
  19. 社交网络分析的 R 基础:(三)向量、矩阵与列表
  20. 【galgame的解包教程】galgame解包及游戏基本信息

热门文章

  1. CodeForces - 1426F Number of Subsequences(dp)
  2. CodeForces - 1353D Constructing the Array(bfs)
  3. SPOJ - SUBLEX Lexicographical Substring Search(后缀自动机)
  4. SPOJ - TOURS Travelling tours(最小费用最大流)
  5. (转)网络流-最大流 SAP算法(模板)
  6. 16.枚举中的option和result.rs
  7. 最简单的基于FFMPEG的视频编码器(YUV编码为H.264)
  8. 【Boost】boost库中function的用法
  9. 透过汇编另眼看世界之多继承下的虚函数函数调用
  10. cocos2d-x初探学习笔记(6)--场景间切换效果