LeetCode 面试题 01.09. 字符串轮转
题目描述
思路分析
解法一:拼接包含判断(推荐)
核心思路:
- 若
s1与s2长度不同,必不可能轮转得到。- 若长度相同,则
s2是s1 + s1的子串当且仅当是轮转字符串。- 直接使用子串查询即可。
复杂度分析:
- 时间复杂度:O(n),其中 n 表示字符串长度。
- 空间复杂度:O(n),拼接生成新字符串。
class Solution {
public boolean isFlipedString(String s1, String s2) {
if (s1.length() != s2.length()) {
return false;
}
if (s1.isEmpty()) {
return true;
}
String doubled = s1 + s1;
return doubled.contains(s2);
}
}
import "strings"
func isFlipedString(s1 string, s2 string) bool {
if len(s1) != len(s2) {
return false
}
if len(s1) == 0 {
return true
}
doubled := s1 + s1
return strings.Contains(doubled, s2)
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 28. 找出字符串中第一个匹配项的下标 | 简单 | 字符串匹配 |
| 459. 重复的子字符串 | 简单 | 字符串 |
| 686. 重复叠加字符串匹配 | 中等 | 字符串 |
| 796. 旋转字符串 | 简单 | 字符串 |
| 125. 验证回文串 | 简单 | 双指针 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
