您的位置:首页 > 编程语言

华为在线编程系列-字符串分割

2017-04-03 10:53 246 查看
题目描述

* 连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;(连续输入字符串(输入2次,每个字符串长度小于100))

* 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入输出示例

* 输入:

abc
123456789


* 输出:

abc00000
12345678
90000000


解题思路:首先定义两个方法(分割字符串和后面补0),如果用户输入的字符串的长度是大于8,则用一个下标标志index来决定分割的头尾,对字符串每隔8个字符进行分割,这一段子串直接输出。分割完剩余的不足8个字符的尾进行补0;如果用户输入的字符串长度小于8,那就直接补0,然后输出;

一开始我想的是,创建一个有序链表LinkedList来将每个分割补0后的字符串都存起来。但是运行时,超出了内存限制。题目只是要求将字符串输出,那我可以不用存储了,直接将分割或者补0的字符串输出即可

代码

import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String s1 = scan.nextLine();
String s2 = scan.nextLine();
//LinkedList<String> result = new LinkedList<String>();
if(s1 != null && !s1.equals("")){
addToList(s1);
}
if(s1 != null && !s2.equals("")){
addToList(s2);

}
}

private static void addToList(String str){
int len = str.length();
// int len2 = s2.length();
int index =0;
if(len > 8){
while(index + 8 <= len){
//result.add(str.substring(index,index+8));
System.out.println(str.substring(index,index+8));
index = index + 8;
}
if(len > index){
//result.add(appendZero(str.substring(index,len)));
System.out.println(appendZero(str.substring(index,len)));
4000
}

}else{
System.out.println(appendZero(str));
}
}
private static String appendZero(String string){
while(string.length() != 8){
string += "0";
}
return string;
}
}


另一种思路:如果字符串的长度不是8的整数倍,则先补0,使其长度为8的整数倍,之后再对字符串进行每隔8个字符进行截取

来源:牛客网
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);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: