💡
原文英文,约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。
➡️