1.题目回顾

题目看着呢很简单,就是很简单的把字符串中的数字变成number
但是哪里是难点呢,是你怎么填入,怎么还不影响后面的元素
2.思路代码
为了便于理解,我们不用原数组来进行操作,因为实在有点不好理解,但是你硬要用,也可以,在此,我分析不用原数组的操作,应该便于理解一点。
Scanner sc = new Scanner(System.in);
String s = sc.next();
int len = s.length();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
len += 5;
}
}
这里就是要先输入一个字符串,然后得到这个字符串的长度,再用charAt()来判断其中的数字,只要有个数字,那就把这个长度延长五
所以后面就开始进行
char[] ret = new char[len];
for (int i = 0; i < s.length(); i++) {
ret[i] = s.charAt(i);
}
先把原来的玩意先给他填进去把
然后就开始遍历填入玩意,两个遍历,第一个从原数组的末端遍历,遇到数字了,在copy数组之中填入number,如果不是数字,那就正常赋值
for(int i = s.length() -1 ,j =len-1 ; i>=0;i--){
if ('0' <= ret[i] && ret[i] <= '9') {
ret[j--] = 'r';
ret[j--] = 'e';
ret[j--] = 'b';
ret[j--] = 'm';
ret[j--] = 'u';
ret[j--] = 'n';
} else {
ret[j--] = ret[i];
}
}
后面再加一个sout(ret);
此题完结
3.完整代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
int len = s.length();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
len += 5;
}
}
char[] ret = new char[len];
for (int i = 0; i < s.length(); i++) {
ret[i] = s.charAt(i);
}
for (int i = s.length() - 1, j = len - 1; i >= 0; i--) {
if ('0' <= ret[i] && ret[i] <= '9') {
ret[j--] = 'r';
ret[j--] = 'e';
ret[j--] = 'b';
ret[j--] = 'm';
ret[j--] = 'u';
ret[j--] = 'n';
} else {
ret[j--] = ret[i];
}
}
System.out.println(ret);
}
}

1557

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



