笔试第一题:字符拼接
1.多组整数数组,需要把他们合并成一个新的数组
2.合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,去完的内容会删除掉,如果改行不足固定长度或者已经为空,直接取出剩余部分的内容放到新的数组中,继续下一行。
3.例一,3
2,5,6,7,9,5,8
1,7,5,4
获取长度3,先遍历第一行,获得2,5,6;再遍历第二行,获得长度1,7,5,再循环回到第一行,获得7,9,5,再遍历第二行,获得4,再回到第一行获得8,按顺序拼接成最终的结果。
import java.util.ArrayList;
import java.util.Scanner;
public class RR {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int max = 0;
int len = scanner.nextInt();//第一个数字代表多长取一次
if (len == 0) return;
int lines = 2;//scanner.nextInt();第二个数字代表多少行(可以直接赋值为2)
ArrayList<String> results = new ArrayList<>();//容器
for (int i = 0; i < lines; i++) {
String line = scanner.next().replace(",", "");//用replace将“,”替代为null
results.add(line);//根据lines循环,将流添加入容器
}
StringBuffer sb = new StringBuffer();//缓冲流
int m = 0;
while (true) {
int n = len;
for (int i = 0; i < results.size(); i++) {//results.size代表容器的大小,其实就是lines
String node = results.get(i);//从容器中取出一个流,按照存入顺序取
//判断是否过界,过界就按node.length()
int temp = n >= node.length() ? node.length() : n;//substring 取node的字串,放入流sb中
sb.append(node.substring(0, temp));//更新node,substring(temp)只有一个参数,就是取temp到最后形成一个新子串,从而达到迭代的效果
node = node.substring(temp);
results.set(i, node);//改变容器内的node
if (node.length() <= 0) m++;
}
if (m == lines) break;
;
}
for (int i = 0; i < sb.length(); i++) {
System.out.print(sb.charAt(i));
System.out.print(",");
}
}
}