3794. 反转字符串前缀 - Reverse String Prefix

🎯 问题描述(来源于LeetCode)

描述:
给定一个字符串 s 和一个整数 k,将字符串的前 k 个字符进行反转。其余字符保持原来的顺序。返回反转后的字符串。

说明:

  • 1 <= s.length <= 100
  • 0 <= k <= s.length(根据常见实现推断,可自行验证)

示例:

  • 示例 1:
1
2
3
输入: s = "abcd", k = 2
输出: "bacd"
解释: 前 2 个字符 "ab" 反转为 "ba",得到 "bacd"。
  • 示例 2:
1
2
3
输入: s = "xyz", k = 3
输出: "zyx"
解释: 前 3 个字符即整个字符串反转。

💻 解题思路

思路:字符串切片拼接

算法步骤

  1. 将字符串 s 分成两部分:前缀 pre = s[:k](前 k 个字符)和后缀 suf = s[k:](剩余字符)。
  2. 反转前缀:pre[::-1]。
  3. 将反转后的前缀与后缀拼接并返回。

代码实现

1
2
3
4
5
class Solution:
def reversePrefix(self, s: str, k: int) -> str:
pre = s[:k]
suf = s[k:]
return pre[::-1] + suf

📊 性能分析

  • 时间复杂度:O(n)O(n),其中 nn 是字符串长度。
  • 空间复杂度:O(n)O(n),切片创建新字符串。

思考

你的代码简洁高效,但如果能注意变量命名的可读性(如将 od 改为 suf 表示后缀),代码会更清晰。
边界情况:由于 Python 切片特性,当 k = 0 时,s[:0] 为空字符串,s[0:] 为原字符串,结果正确;当 k >= len(s) 时,s[:k] 返回整个字符串,s[k:] 为空,结果也正确。无需额外判断。