华为2019年4月笔试题

笔试第一题:字符拼接


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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值