目录

LC 面试题 01.09. 字符串轮转 (opens new window) (opens new window)

简单

# 问题描述

字符串轮转。给定两个字符串 s1s2,请编写代码检查 s2 是否为 s1 旋转而成(比如,waterbottleerbottlewat 旋转后的字符串)。

示例 1:

输入:s1 = "waterbottle", s2 = "erbottlewat"
输出:True

示例 2:

输入:s1 = "aa", s2 = "aba"
输出:False

提示:

  • 字符串长度在[0, 100000]范围内。

说明:

你能只调用一次检查子串的方法吗?

# 搜索子字符串

s1s1s2s2 长度不一致,则 s1s1 必然不能通过旋转得到 s2s2,因此,可以直接返回 falsefalse,若二者长度相同,若s1s1 能够旋转得到 s2s2,那么 s2+s2s2 + s2 必然存在字符串 s1s1

/**
 * @param {string} s1
 * @param {string} s2
 * @return {boolean}
 */
var isFlipedString = function (s1, s2) {
  return s1.length === s2.length && (s2 + s2).includes(s1)
}
  • 时间复杂度:O(n2)O(n^2)
  • 空间复杂度:O(n)O(n)
上次更新: 2023/01/31 19:48:05

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 , 转载请注明出处!