目录
题目链接: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();
}
}