796. 旋转字符串 : 简单模拟题

简介: 796. 旋转字符串 : 简单模拟题

网络异常,图片无法展示
|


题目描述



这是 LeetCode 上的 796. 旋转字符串 ,难度为 简单


Tag : 「模拟」


给定两个字符串,sgoal。如果在若干次旋转操作之后,s 能变成 goal,那么返回 true


s 的旋转操作就是将 s 最左边的字符移动到最右边。


  • 例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea'


示例 1:


输入: s = "abcde", goal = "cdeab"
输出: true
复制代码


示例 2:


输入: s = "abcde", goal = "abced"
输出: false
复制代码


提示:


  • 1 <= s.length, goal.length <= 1001<=s.length,goal.length<=100
  • sgoal 由小写英文字母组成


模拟



由于每次旋转操作都是将最左侧字符移动到最右侧,因此如果 goal 可由 s 经过多步旋转而来,那么 goal 必然会出现在 s + s 中,即满足 (s + s).contains(goal),同时为了 s 本身过长导致的结果成立,我们需要先确保两字符串长度相等。


代码:


class Solution {
    public boolean rotateString(String s, String goal) {
        return s.length() == goal.length() && (s + s).contains(goal);
    }
}
复制代码


  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(n)O(n)


最后



这是我们「刷穿 LeetCode」系列文章的第 No.796 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。


在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。


为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:github.com/SharingSour…


在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。

相关文章
|
9月前
|
设计模式 消息中间件 安全
手撕单例的 5 种写法!
手撕单例的 5 种写法!
101 4
手撕单例的 5 种写法!
|
人工智能 搜索推荐 数据安全/隐私保护
探索移动应用开发的未来趋势
在数字化时代的浪潮中,移动应用开发不断演变,推动着技术革新和商业模式的重塑。本文将深入分析当前的移动开发环境,探讨未来可能的趋势,包括跨平台工具的兴起、人工智能的融合、用户体验的优化,以及隐私保护的重要性。通过这些维度,我们将揭示移动应用开发如何适应不断变化的技术景观和用户需求。
|
存储 安全 Java
基于ArrayList源码探讨如何使用ArrayList
基于ArrayList源码探讨如何使用ArrayList
|
存储 移动开发 缓存
浏览器专题系列 - 渲染原理
浏览器专题系列 - 渲染原理
|
设计模式 前端开发 NoSQL
设计模式的一些概念
目的:为什么要学习设计模式 提高复杂代码的设计和开发能力。让读源码、学框架事半功倍。 为你的职场发展做铺垫。为了应付面试, 更有竞争力。
222 0
|
SQL 监控 关系型数据库
API参考—性能参数表
本文分别介绍了计算节点、数据/GMS节点、CDC节点的监控参数和含义。
高效职业发展的七个习惯
静下心来对照自身,体验一些常讲常新的道理,建立一些实实在在的习惯,最后你只需做一件事:等待晋升的好消息。   Elena Gong   经理人要获得更好的职业机会,在职业发展上持续前进,除了需要不断学习来提高相关的知识和技能之外,还需要培养以下七个习惯:   一、充分地认识自我   一个人能否取得事业上的成功,关键在于是否能准确识别并充分发挥自身的优势。
2024 0