华为OJ063-字符串分割

Posted Wang-Junchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为OJ063-字符串分割相关的知识,希望对你有一定的参考价值。

【华为OJ】【算法总篇章】


【华为OJ】【063-字符串分割】

【工程下载】


题目描述

连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
首先输入一个整数,为要输入的字符串个数。
例如:
输入:
    2
    abc
    12345789
输出:
    abc00000
    12345678
    90000000

输入描述

首先输入数字n,表示要输入多少个字符串。连续输入字符串(输出次数为N,字符串长度小于100)。

输出描述

按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入例子

2
abc
123456789

输出例子

abc00000
12345678
90000000

算法实现

import java.util.Arrays;
import java.util.Scanner;

/**
 * Author: 王俊超
 * Date: 2015-12-27 16:18
 * Declaration: All Rights Reserved !!!
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            String[] arr = new String[n];

            for (int i = 0; i < arr.length; i++) {
                arr[i] = scanner.next();
            }

            System.out.println(convert(arr));
        }

        scanner.close();
    }

    private static String convert(String[] arr) {

        StringBuilder builder = new StringBuilder(128);
        for (String s : arr) {
            int pos = 8;

            while (pos <= s.length()) {
                builder.append(s.substring(pos - 8, pos)).append('\\n');
                pos += 8;
            }


            if (pos > s.length()) {
                builder.append(s.substring(pos - 8, s.length()));
            }

            for (int i = s.length(); i < pos; i++) {
                builder.append('0');
            }

            builder.append('\\n');
        }
        return builder.substring(0, builder.length() - 1);
    }
}

以上是关于华为OJ063-字符串分割的主要内容,如果未能解决你的问题,请参考以下文章

华为OJ078-计算字符串的距离

华为OJ062-表示数字

华为OJ071-公共子串计算

华为OJ083-计算字符串的相似度

华为OJ082-字符串通配符

华为OJ081-查找两个字符串a,b中的最长公共子串