1. 程式人生 > >華為線上程式設計題系列-4-字串分隔

華為線上程式設計題系列-4-字串分隔

問題描述:

問題描述

1. 問題涉及知識點.

  • 做一個無限輸入scanner.hasNext().
  • 字串處理.

2. 自己解法.

  • 兩個輸入,每次處理一個.
  • 判斷字元長度,如果是8的倍數,直接按照8位一切分,如果不是8的倍數,新增0成8的倍數,之後切分.
package com.chaoxiong.niuke.huawei;
import java.util.Objects;
import java.util.Scanner;
public class HuaWei_4 {
    public static void main(String[] args) {
        Scanner in = new
Scanner(System.in); while (in.hasNext()) { String string1 = in.nextLine(); String string2 = in.nextLine(); String []strArr = new String[13];//字串最長為100 100/8=13 // 每次處理一個字串 int strArrIndex = SegmentStr(string1.trim(),strArr); if(strArrIndex!=0
){ for(int i=0;i<strArrIndex;i++){ System.out.println(strArr[i]); } } strArrIndex = SegmentStr(string2, strArr); if (strArrIndex != 0) { for(int i=0;i<strArrIndex;i++){ System.out.println(strArr[i]); } } } } private
static int SegmentStr(String str, String[] strArr) { // 字串為空,不做處理. if(Objects.equals(str, "") ||str==null){return 0;} char [] charArr = str.toCharArray(); char[] tmpCharArr; if(charArr.length%8==0){//可以整除8直接切分. tmpCharArr = new char[charArr.length]; }else { // 不能整除8,則取整除之後加上1. tmpCharArr = new char[(charArr.length/8+1)*8]; } // 切分操作. for(int i=0;i<tmpCharArr.length;i++){ if(i<charArr.length){ tmpCharArr[i] = charArr[i]; }else { tmpCharArr[i] = '0'; } } // 列印. int strArrIndex = 0; for(int i=0;i<(tmpCharArr.length/8);i++){ String tmp = new String(tmpCharArr, i*8, 8); strArr[strArrIndex] =tmp; strArrIndex++; } return strArrIndex; } }

3. 優質答案.

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){        
            String s = new String(sc.nextLine());
            if(s.length()%8 !=0 )
                s = s + "00000000";
            while(s.length()>=8){
                System.out.println(s.substring(0, 8));
                s = s.substring(8);
            }
        }
    }
}

4. 本題總結.

String.substring(index)指的是去string中index之後的字元. 123.substring(2) out:3.