题意整理。

  • 连续输入字符串。
  • 按长度为8拆分字符串并输出。

方法一(字符串截取)

1.解题思路

  • 对于每一个字符串,只要长度大于等于8,就一直做截取操作,截取的长度为8。
  • 如果长度小于8,则在后面补0。直到处理完所有的字符。

图解展示: alt

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操作需要遍历整个字符串,所以时间复杂度为O(n)O(n)
  • 空间复杂度:不需要额外的空间,所以空间复杂度为O(1)O(1)

方法二(使用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操作需要遍历整个字符串,所以时间复杂度为O(n)O(n)
  • 空间复杂度:不需要额外的空间,所以空间复杂度为O(1)O(1)