当前位置:   article > 正文

华为2019年4月笔试题_华为0419笔试题解java

华为0419笔试题解java

笔试第一题:字符拼接


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(",");


    }
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/919098
推荐阅读
相关标签
  

闽ICP备14008679号