LeetCode 796. 旋转字符串
题目描述
思路分析
解法一:拼接判断子串(推荐)
核心思路:
- 如果
s可旋转得到goal,则goal一定是s + s的子串。- 先判断长度相等,再做子串判断即可。
复杂度分析:
- 时间复杂度:O(n^2),其中 n 表示字符串长度(基于内置子串查找)。
- 空间复杂度:O(n),拼接字符串占用额外空间。
class Solution {
public boolean rotateString(String s, String goal) {
if (s.length() != goal.length()) {
return false;
}
String doubled = s + s;
return doubled.contains(goal);
}
}
import "strings"
func rotateString(s string, goal string) bool {
if len(s) != len(goal) {
return false
}
doubled := s + s
return strings.Contains(doubled, goal)
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 28. 找出字符串中第一个匹配项的下标 | 简单 | 子串匹配 |
| 459. 重复的子字符串 | 简单 | 字符串、拼接 |
| 796. 旋转字符串 | 简单 | 字符串 |
| 686. 重复叠加字符串匹配 | 中等 | 字符串、拼接 |
| 58. 最后一个单词的长度 | 简单 | 字符串遍历 |
| 344. 反转字符串 | 简单 | 双指针 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
