LeetCode 面试题 01.09. 字符串轮转

题目描述

面试题 01.09. 字符串轮转

image-20230312174811551

思路分析

解法一:拼接包含判断(推荐)

核心思路

  • s1s2 长度不同,必不可能轮转得到。
  • 若长度相同,则 s2s1 + 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. 验证回文串 简单 双指针
本文作者:
本文链接: https://hgnulb.github.io/blog/2023/77678642
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!