344 反转字符
题目链接:. - 力扣(LeetCode)
文章链接:代码随想录
思路:一个指针指向数组的开头,另一个指向数组的末尾。通过交换这两个指针所指向的元素,然后移动指针,直到两个指针相遇,完成数组的反转。

541. 反转字符串II
题目链接:. - 力扣(LeetCode)
文章链接:代码随想录
思路:
1. 字符数组转换:首先将字符串转换为字符数组,这样便于直接修改数组中的字符。
2. 遍历控制:使用一个循环,每次增加 2k,从而实现每隔 2k 对前 k 个字符进行反转
3. 条件判断:
- 如果当前索引
i加上k小于等于数组长度,则反转从i到i+k-1的字符。 - 如果不满足上述条件,即剩余字符少于
k个,则反转从i到数组末尾的所有字符。
4. 反转函数:定义一个辅助函数来实现数组中指定区间内字符的反转

54.替换数字(这道题的代码后期还需要自己再瞧一遍)
题目链接:54. 替换数字(第八期模拟笔试)
文章链接:代码随想录
思路:使用字符数组来操作字符串,通过从后向前替换的方式避免替换过程中重复解析已替换部分的问题。
1. 字符串转换与空间计算:将输入的字符串转换为字符数组,同时统计字符串中数字字符的数量,以计算需要扩展的数组大小。
int count = 0; // 统计数字的个数
int sOldSize = s.length();
for (int i = 0; i < s.length(); i++) {
if(Character.isDigit(s.charAt(i))){
count++;
}
}
// 扩充字符串s的大小,也就是每个空格替换成"number"之后的大小
char[] newS = new char[s.length() + count * 5];
int sNewSize = newS.length;
2. 逆序替换算法 为了避免替换过程中重新处理已经替换的部分,从字符串的末尾开始向前工作,逐步构建新的字符数组。
// 将旧字符串的内容填入新数组
System.arraycopy(s.toCharArray(), 0, newS, 0, sOldSize);
// 从后先前将空格替换为"number"
for (int i = sNewSize - 1, j = sOldSize - 1; j < i; j--, i--) {
if (!Character.isDigit(newS[j])) {
newS[i] = newS[j];
} else {
newS[i] = 'r';
newS[i - 1] = 'e';
newS[i - 2] = 'b';
newS[i - 3] = 'm';
newS[i - 4] = 'u';
newS[i - 5] = 'n';
i -= 5;
}
}
3. 结果输出 将新构建的字符数组转换回字符串。
return new String(newS);
4. 主方法:提供一个简单的命令行界面,让用户输入字符串,并显示替换结果。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
System.out.println(replaceNumber(s));
scanner.close();
}
888

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



