解析(局部反转+整体反转)
题目要求:
输入: s = "abcdefg", k = 2
输出: "cdefgab"
大体思路:一般使用切片做最直接。但是如果不能申请额外空间,只能在本串上操作,并且时间复杂度是O(1),怎么做?
局部反转+整体反转,具体做法如下图

注意点:
翻转字符串类型的题目,整体反转+局部反转,或者,局部反转+整体反转,都是一种比较好的思路。
代码:
class Solution {
public String reverseLeftWords(String s, int n) {
StringBuilder str = new StringBuilder();
for (char i : s.toCharArray()) {
str.append(i);
}
reverseString(0, n - 1, str);
reverseString(n, str.length() - 1, str);
reverseString(0, str.length() - 1, str);
return str.toString();
}
public void reverseString(int start, int end, StringBuilder str) {
while (start < end) {
char temp = str.charAt(start);
str.setCharAt(start, str.charAt(end));
str.setCharAt(end, temp);
start++;
end--;
}
}
}
注释:图片来自于代码随想录
Python字符串局部与整体反转实现
文章讨论了一种在不使用额外空间且时间复杂度为O(1)的情况下,对字符串进行局部和整体反转的方法。通过使用StringBuilder类,实现了对字符串的三次反转操作,分别是局部反转、整体反转以及最后的合并步骤。这种方法适用于限制内存使用和优化时间效率的场景。
285

被折叠的 条评论
为什么被折叠?



