2023/8/2 任务
344.反转字符串,541. 反转字符串II,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串
541. 反转字符串II
类似于344.反转字符串
(解法一)StringBuffer
class Solution {
public String reverseStr(String s, int k) {
StringBuffer res = new StringBuffer();
int len = s.length();
int start = 0;
while (start < len){
StringBuffer tmp = new StringBuffer();
int firstK = (start + k > len) ? len : (start + k);
int secondK = (start + 2 * k > len) ? len : (start + 2 * k);
tmp.append(s.substring(start, firstK));
res.append(tmp.reverse());
if (firstK < secondK) {
res.append(s.substring(firstK, secondK));
}
start += 2 * k;
}
return res.toString();
}
}
(解法二)数组
char[] crr = s.toCharArray();
for (int i = 0; i < crr.length; i += 2 * k) {
int start = i;
int end = Math.min(crr.length - 1, start + k - 1);
while (start < end) {
char tmp = crr[start];
crr[start] = crr[end];
crr[end] = tmp;
start++;
end--;
}
}
return new String(crr);
剑指Offer 05.替换空格
class Solution {
public String replaceSpace(String s) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' ') {
sb.append("%20");
} else {
sb.append(s.charAt(i));
}
}
return sb.toString();
}
}
151.翻转字符串里的单词
建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。
剑指Offer58-II.左旋转字符串
建议:题解中的解法如果没接触过的话,应该会想不到