Skip to content

3794. Reverse String Prefix

Description

You are given a string s and an integer k.

Reverse the first k characters of s and return the resulting string.

 

Example 1:

Input: s = "abcd", k = 2

Output: "bacd"

Explanation:​​​​​​​

The first k = 2 characters "ab" are reversed to "ba". The final resulting string is "bacd".

Example 2:

Input: s = "xyz", k = 3

Output: "zyx"

Explanation:

The first k = 3 characters "xyz" are reversed to "zyx". The final resulting string is "zyx".

Example 3:

Input: s = "hey", k = 1

Output: "hey"

Explanation:

The first k = 1 character "h" remains unchanged on reversal. The final resulting string is "hey".

 

Constraints:

  • 1 <= s.length <= 100
  • s consists of lowercase English letters.
  • 1 <= k <= s.length

Solutions

Solution 1: Simulation

We reverse the first \(k\) characters of the string according to the problem description, and then concatenate them with the remaining characters.

The time complexity is \(O(n)\) and the space complexity is \(O(n)\), where \(n\) is the length of the string.

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);
}

Comments