跳转至

3794. 反转字符串前缀

题目描述

给你一个字符串 s 和一个整数 k

反转 s 的前 k 个字符,并返回结果字符串。

 

示例 1:

输入: s = "abcd", k = 2

输出: "bacd"

解释:

k = 2 个字符 "ab" 反转为 "ba"。最终得到的结果字符串为 "bacd"

示例 2:

输入: s = "xyz", k = 3

输出: "zyx"

解释:

k = 3 个字符 "xyz" 反转为 "zyx"。最终得到的结果字符串为 "zyx"

示例 3:

输入: s = "hey", k = 1

输出: "hey"

解释:

k = 1 个字符 "h" 在反转后保持不变。最终得到的结果字符串为 "hey"

 

提示:

  • 1 <= s.length <= 100
  • s 仅由小写英文字母组成。
  • 1 <= k <= s.length

解法

方法一:模拟

我们按照题目描述,将字符串的前 \(k\) 个字符反转,然后与剩余的字符串拼接即可。

时间复杂度 \(O(n)\),空间复杂度 \(O(n)\),其中 \(n\) 是字符串的长度。

1
2
3
class Solution:
    def reversePrefix(self, s: str, k: int) -> str:
        return s[:k][::-1] + s[k:]
1
2
3
4
5
6
class Solution {
    public String reversePrefix(String s, int k) {
        StringBuilder sb = new StringBuilder(s.substring(0, k));
        return sb.reverse().toString() + s.substring(k);
    }
}
1
2
3
4
5
6
7
8
class Solution {
public:
    string reversePrefix(string s, int k) {
        string t = s.substr(0, k);
        reverse(t.begin(), t.end());
        return t + s.substr(k);
    }
};
1
2
3
4
5
func reversePrefix(s string, k int) string {
    t := []byte(s[:k])
    slices.Reverse(t)
    return string(t) + s[k:]
}
1
2
3
function reversePrefix(s: string, k: number): string {
    return s.slice(0, k).split('').reverse().join('') + s.slice(k);
}

评论