LeetCode 796. 旋转字符串

题目描述

796. 旋转字符串

image-20230312172416619

思路分析

解法一:拼接判断子串(推荐)

核心思路

  • 如果 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. 反转字符串 简单 双指针
本文作者:
本文链接: https://hgnulb.github.io/blog/2024/78865117
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!