通过全部用例,运行时间19ms,占用内存9828kb,记得在上面添加java对应的import包。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
//如果输入为空或者长度等于0,空字符串不处理
if(str==null||str.length()==0){
return;
}
//去除输入的字符串中的空字符
str = str.replaceAll(" ","");
//输入的字符串的长度
int len = str.length();
//字符串可以整出的字符串个数
int n = len/8;
//字符串不能整出的字符个数
int m = 8-len%8;
//如果输入的字符串长度小于8,在后面添加相应个数的“0”,并返回
if(n==0){
for(int i=0;i<m;i++){
str+="0";
}
System.out.println(str);
return;
}
//想着用StringBuilder会不会快点
StringBuilder s = new StringBuilder();
s.append(str);
//先以字符串数组的形式存放新字符串到list集合,也可以不用list
List<Character> c = new ArrayList<>();
//新字符串数组
String[] strings = new String[n+1];
//把char数组转换成string存放到string数组
for(int i=0;i<n;i++){
for(int j=0;j<8;j++){
c.add(s.charAt(i*8+j));
}
strings[i]=c.toString();
//每次存放完要清空数组
c.clear();
}
//如果字符串大于8且不是8的倍数
if(m!=8){
//先添加不能整除的部分
for(int i=0;i<8-m;i++){
c.add(s.charAt(8*n+i));
}
//再添加‘0’
for (int i=0;i<m;i++){
c.add('0');
}
strings[n] = c.toString();
//否则字符串数组最后一个元素去掉,总长度减1
}else {
strings = Arrays.copyOf(strings,strings.length-1);
}
//遍历strings字符串数组
for(String string:strings){
//去除string中的“,”,空格,最前面和最后面的【】,因为之前用的list保存字符串数组
string = string.replaceAll(",", "");
string = string.replaceAll(" ","");
string = string.substring(1,string.length()-1);
System.out.println(string);
}