题意整理。
- 连续输入字符串。
- 按长度为8拆分字符串并输出。
方法一(字符串截取)
1.解题思路
- 对于每一个字符串,只要长度大于等于8,就一直做截取操作,截取的长度为8。
- 如果长度小于8,则在后面补0。直到处理完所有的字符。
图解展示:
2.代码实现
import java.util.Scanner;
public class Main{
public static void main(String[] args){
//标准输入
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
//输入字符换
String s=sc.nextLine();
//只要长度大于等于8,则按长度8一段一段的截取
while(s.length()>=8){
System.out.println(s.substring(0,8));
s=s.substring(8);
}
//如果长度还大于0,则在后面补8个0,继续截取前8位并输出
if(s.length()>0){
s=s+"00000000";
System.out.println(s.substring(0,8));
}
}
}
}
3.复杂度分析
- 时间复杂度:每次substring操作,需要遍历8个字符进行截取,完成所有substring操作需要遍历整个字符串,所以时间复杂度为。
- 空间复杂度:不需要额外的空间,所以空间复杂度为。
方法二(使用IO流处理输入)
1.解题思路
思路和方法一相同,不过采用输入流处理输入的字符串。
2.代码实现
import java.io.*;
public class Main{
public static void main(String[] args){
//利用BufferedReader接受输入字符串
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//记录输入字符串
String s;
try{
while((s=br.readLine())!=null){
//只要长度大于等于8,则按长度8一段一段的截取
while(s.length()>=8){
System.out.println(s.substring(0,8));
s=s.substring(8);
}
//如果长度还大于0,则在后面补8个0,继续截取前8位并输出
if(s.length()>0){
s=s+"00000000";
System.out.println(s.substring(0,8));
}
}
}
catch(IOException e){
}
}
}
3.复杂度分析
- 时间复杂度:每次substring操作,需要遍历8个字符进行截取,完成所有substring操作需要遍历整个字符串,所以时间复杂度为。
- 空间复杂度:不需要额外的空间,所以空间复杂度为。