问题描述

给定一个字符串 s 和整数 k,编写一个函数实现字符串的旋转操作。例如:当 s = "hello"k = 2 时,旋转后应得到 "lohel"

示例

  • 输入:s = "abcde", k = 3
    输出:"deabc"
  • 输入:s = "abcdefg", k = 1
    输出:"gabcdef"

解决方案思路

  1. 暴力法

    • 循环 k 次,每次将字符串首字符移动至末尾
    • ⚠️ 时间复杂度为 O(n*k),适用于小数据量场景
    • rotate_string
  2. 字符串拼接法

    • 将字符串拆分为两部分,拼接后旋转
    • ✅ 时间复杂度 O(n),推荐用于大多数情况
    • 示例:s = "abcdef", k = 2"cdefab"
  3. 队列优化

    • 使用双端队列实现高效旋转
    • 🚀 时间复杂度 O(n),空间复杂度 O(n)

代码实现(Python)

def rotate_string(s: str, k: int) -> str:
    n = len(s)
    k = k % n  # 避免多余旋转
    return s[-k:] + s[:-k] if k != 0 else s

扩展阅读

💡 提示:若 k 大于字符串长度,可通过取模优化性能。