代码随想录 算法训练营 d7 Leetcode344 反转字符串 Leetcode541 反转字符转2 替换数字54
Leetcode344 反转字符串
双指针思想 交换字符即可

class Solution {
public void reverseString(char[] s) {
int l = 0;
int r = s.length-1;
while(l<r){
char tep = s[l];
s[l] = s[r];
s[r] = tep;
l++;
r--;
}
}
}
Leetcode541 反转字符转2
理顺题目逻辑即可
每次直接跳入后2k个
根据剩余的字符判断反转的串
不足k个直接全部反转,不到2k大于k就反转前k个
class Solution {
public String reverseStr(String s, int k) {
char[] ch = s.toCharArray();
// 1. 每隔 2k 个字符的前 k 个字符进行反转
for (int i = 0; i< ch.length; i += 2 * k) {
// 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符
if (i + k <= ch.length) {
reverse(ch, i, i + k -1);
continue;
}
// 3. 剩余字符少于 k 个,则将剩余字符全部反转
reverse(ch, i, ch.length - 1);
}
return new String(ch);
}
public void reverse(char[] ch, int i, int j) {
for (; i < j; i++, j--) {
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
}
}
替换数字54
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i))) {
sb.append("number");
}else sb.append(s.charAt(i));
}
System.out.println(sb);
}
}

浙公网安备 33010602011771号