目录
题目链接:344. 反转字符串 - 力扣(LeetCode)
题目链接:541. 反转字符串 II - 力扣(LeetCode)
题目链接:54. 替换数字(第八期模拟笔试) (kamacoder.com)
Nothing is impossible for a willing heart.
题目链接:344. 反转字符串 - 力扣(LeetCode)
简单的字符串基础题目,还是使用双指针法,easy!

class Solution344 {
public void reverseString(char[] s) {
int left = 0, right = s.length - 1;
while (left < right){
char temp = s[left];
s[left] = s[right];
s[right] = temp;
left ++;
right --;
}
}
}
题目链接:541. 反转字符串 II - 力扣(LeetCode)
思路:按照题目描述的步骤逐步处理字符串。我们可以使用一个循环,每次处理 2k 个字符,并根据剩余字符的数量执行相应的反转操作。
1. 将输入字符串
s转换为字符数组chars,方便原地修改字符;2. 使用
for循环,每次处理2k个字符,从start开始,步长为2k;3. 在每个
2k范围内,确定反转范围的起始位置i和结束位置j:----------- 起始位置
i为start。----------- 结束位置
j为start + k - 1和n - 1中的较小值,以防止越界。4. 使用
while循环反转这k个字符的子数组;5. 最后,将字符数组转换回字符串并返回。
class Solution541 {
public String reverseStr(String s, int k) {
char[] chars = s.toCharArray();
int n = chars.length;
for (int start = 0; start < n; start += 2 * k) {
int i = start;
int j = Math.min(start + k - 1, n -1);
while(i < j){
char temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;
i++;
j--;
}
}
return new String(chars);
}
}
题目链接:54. 替换数字(第八期模拟笔试) (kamacoder.com)
❤前几天刚学习了 StringBuilder 和 StringBuffer 的API。使用 StringBuilder 来构建新的字符串,因为 StringBuilder 在处理字符串拼接时比直接使用 String 更高效。我们遍历输入字符串 s 中的每个字符,如果字符是数字字符,则将其替换为 number,否则保持字符不变。
class KamaCoder54 {
public String replaceDigits(String s) {
// 使用 StringBuilder 来构建新的字符串
StringBuilder result = new StringBuilder();
for (char c : s.toCharArray()){
if (Character.isDigit(c)){ // 如果当前字符是数字,则向后拼接number
result.append("number");
} else { 如果当前字符不是数字,则向后拼接当前字符
result.append(c);
}
}
return result.toString();
}
}

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



