華為線上程式設計題系列-4-字串分隔
阿新 • • 發佈:2019-01-05
問題描述:
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
.