
题目描述
给你一个字符串 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\) 是字符串的长度。
| class Solution:
def reversePrefix(self, s: str, k: int) -> str:
return s[:k][::-1] + s[k:]
|
| class Solution {
public String reversePrefix(String s, int k) {
StringBuilder sb = new StringBuilder(s.substring(0, k));
return sb.reverse().toString() + s.substring(k);
}
}
|
| 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);
}
};
|
| func reversePrefix(s string, k int) string {
t := []byte(s[:k])
slices.Reverse(t)
return string(t) + s[k:]
}
|
| function reversePrefix(s: string, k: number): string {
return s.slice(0, k).split('').reverse().join('') + s.slice(k);
}
|