【2022-09-29每日一题】面试题 01.09. 字符串轮转[Easy]
2022-09-29
1分钟阅读时长
2022-09-29每日一题:面试题 01.09. 字符串轮转
难度:Easy
标签:字符串 、 字符串匹配
字符串轮转。给定两个字符串s1
和s2
,请编写代码检查s2
是否为s1
旋转而成(比如,waterbottle
是erbottlewat
旋转后的字符串)。
示例1:
输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True
示例2:
输入:s1 = "aa", s2 = "aba" 输出:False
提示:
- 字符串长度在[0, 100000]范围内。
说明:
- 你能只调用一次检查子串的方法吗?
方法一:模拟
详细思路过程见官方题解,这里只做个人刷题记录,方便后续查询阅读
func isFlipedString(s1 string, s2 string) bool {
n := len(s1)
if n != len(s2) {
return false
}
if n == 0 {
return true
}
next:
for i := 0; i < n; i++ {
for j := 0; j < n; j++ {
if s1[(i+j)%n] != s2[j] {
continue next
}
}
return true
}
return false
}
复杂度分析
时间复杂度:O(n^2)
空间复杂度:O(1)
方法二:搜索子字符串
func isFlipedString(s1 string, s2 string) bool {
if len(s1) != len(s2) {
return false
}
return strings.Contains(s1+s1, s2)
}
复杂度分析
时间复杂度:O(n)
空间复杂度:O(n)