一、题目描述
输入一个字符串,请按长度为8拆分每个输入字符串并进行输出,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
二、输入描述
连续输入字符串(每个字符串长度小于等于100)。
三、输出描述
依次输出所有分割后的长度为8的新字符串。
四、解题思路
- 创建一个空字符串 input 来存储连续输入的字符串;
- 使用 Scanner 读取连续输入的字符串,并将它们逐个追加到 input 中,直到遇到空字符串或输入结束;
- 调用 splitAndPrint 方法对 input 进行处理;
- 在 splitAndPrint 方法中,使用循环遍历输入字符串,每次迭代取出长度为8的子字符串并进行输出;
- 如果子字符串长度不足8,在末尾补充数字0,直到长度达到8;
- 循环结束后,所有分割后的长度为8的新字符串都已输出。
时间复杂度:假设输入字符串的总长度为 n,则遍历字符串的时间复杂度为 O(n),因为每个字符都需要访问一次。补充数字0的操作时间复杂度为 O(1),不会随着输入规模的增加而增加。因此,总体时间复杂度为 O(n)。
空间复杂度:除了输入字符串外,额外使用的空间为常数级别,因此空间复杂度为 O(1)。
五、Java算法源码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
// 当字符串的长度大于等于8时,进行字符串截取;
while (str.length() >= 8) {
System.out.println(str.substring(0, 8));
str = str.substring(8);
}
// 长度不是8整数倍的字符串请在后面补数字0
if (str.length() < 8 && str.length() > 0) {
str += "00000000";
System.out.println(str.substring(0, 8));
}
}
六、效果展示