796. 旋转字符串

796. 旋转字符串

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

给定两个字符串s和goal,判断s经过若干次左移后是否能变为goal。可以通过将s与自身连接(s+s)来检查goal是否为其子串,时间复杂度为O(n),空间复杂度为O(n)。

🎯

关键要点

  • 给定两个字符串s和goal,判断s经过若干次左移后是否能变为goal。

  • 左移操作是将s的最左字符移动到最右位置。

  • 通过将s与自身连接(s+s)来检查goal是否为其子串。

  • 时间复杂度为O(n),空间复杂度为O(n)。

  • 首先检查s和goal的长度是否相同,若不同则返回false。

  • 连接字符串s以创建doubleS。

  • 使用strpos()函数检查goal是否为doubleS的子串。

  • 如果goal是子串则返回true,否则返回false。

延伸问答

如何判断字符串s经过左移后是否能变为goal?

可以通过将s与自身连接(s+s)来检查goal是否为其子串,如果goal是子串则返回true,否则返回false。

字符串s和goal的长度有什么要求?

s和goal的长度必须相同,如果长度不同则直接返回false。

左移操作是如何定义的?

左移操作是将字符串s的最左字符移动到最右位置。

使用什么函数检查goal是否为doubleS的子串?

使用strpos()函数来检查goal是否为doubleS的子串。

该算法的时间复杂度和空间复杂度是多少?

时间复杂度为O(n),空间复杂度为O(n)。

给出一个示例,说明如何判断字符串旋转。

例如,s = 'abcde',goal = 'cdeab',经过左移后,s可以变为goal,因此返回true。

➡️

继续阅读