首页 > 试题广场 >

字符串分隔

[编程题]字符串分隔
  • 热度指数:1149539 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;

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

输入描述:

连续输入字符串(每个字符串长度小于等于100)



输出描述:

依次输出所有分割后的长度为8的新字符串

示例1

输入

abc

输出

abc00000
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        // 填充倍数的算法
        String fillString = fillingMultiple(str, 8);

         for (int i = 0; i < fillString.length(); i = i + 8) {
            System.out.println(fillString.substring(i, i + 8));
        }

    }
    public static String fillingMultiple(String str, int multiple){
        int remainder = str.length() % multiple;
        if(remainder != 0){
            int fillZero = multiple - remainder;
            for(int i = 0; i < fillZero; i++){
                str += "0";
            }
        }
        return str;
    }
}

编辑于 2024-03-14 17:18:08 回复(1)
30ms
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str = in.nextLine();
        int length = str.length();
        // 长度为0就返回
        if (length == 0) {
            return;
        }
        int n = length / 8;
        // 补全的0字符串
        String mm = "00000000".substring(length % 8);
        
        for (int i = 0; i <= n; i++) {
            if (i == n) {
                if (length % 8 == 0) return;
                System.out.println(str.substring(8 * i) + mm);
            } else {
                System.out.println(str.substring(8 * i, (i + 1) * 8));
            }
        }
    }
}


发表于 2024-03-13 13:51:35 回复(1)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String a = in.nextLine();
        int len = a.length();
        int s = len % 8;
        int t = len / 8;
        if (s == 0) {
            /*是8的倍数分开输出 */
            for (int i = 0; i < len; i++) {
                  System.out.print(a.charAt(i));
                 if((i+1) % 8 == 0 && i!=0) {
                    System.out.println();
                }

            }
        } else {
            /*不是8 */
            for (int i = 0; i < len; i++) {
             
                    System.out.print(a.charAt(i));
                 if((i+1) % 8 == 0 && i!=0) {
                    System.out.println();
                }
            }
            for(int j = 0; j < 8 - s; j++){
                System.out.print(0);
            }
           
        }
        
        }
    }


发表于 2024-03-08 19:38:41 回复(0)
硬编码。。。
public class PracticeTest {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        StringBuilder str = new StringBuilder(in.nextLine());
        int count = (int)Math.ceil((double)str.length() / 8);
        int left = str.length() % 8;
        if (str.length() < 8) {
            str.append("0".repeat((8 - left)));
            System.out.println(str);
        } else {
            if (left > 0) {
                for (int i = 0; i < count - 1; i++) {
                    System.out.println(str.substring(i * 8, (i + 1) * 8));
                }
                System.out.println(str.substring(str.length() - left) + "0".repeat(left));
            } else {
                for (int i = 0; i < count; i++) {
                    System.out.println(str.substring(i * 8, (i + 1) * 8));
                }
            }
        }
    }
}

发表于 2024-03-07 14:16:03 回复(0)
写复杂了

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {

    public static void solution(String inputStr) {
        if(inputStr.length() >= 8) {
            int index = 0;
            int endIndex = 8;
            int length = inputStr.length();
            while(index <= length - 1) {
                String nStr;
                if(endIndex <= length - 1) {
                    nStr = inputStr.substring(index, endIndex);
                    System.out.println(nStr);
                } else {
                    nStr = inputStr.substring(index, length);
                    if(nStr.length() < 8) { 
                        StringBuilder sb = new StringBuilder();
                        sb.append(nStr);
                        sb.append("0");
                        while(sb.length() < 8) {
                            sb.append("0");
                        }
                        System.out.println(sb.toString());
                    } else {
                        System.out.println(nStr.toString());
                    }
                }
                index = index + 8;
                endIndex = endIndex + 8;
            }
        } else {
            StringBuilder sb = new StringBuilder();
            sb.append(inputStr);
            sb.append("0");
            while(sb.length() < 8) {
                sb.append("0");
            }
            System.out.println(sb.toString());
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String inputStr = in.nextLine();
            solution(inputStr);
        }
    }
}

发表于 2024-01-15 11:08:28 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc =  new Scanner(System.in);
        while(sc.hasNext()) {
            String str = sc.nextLine();
            //源字符串中可以完整的分为长度为8的字符串的个数
            int n = str.length() / 8;
            //剩下的长度不足8的字符串的个数,如果为0,就说明源字符串可以完全分割成n个长度为8的字符串
            int m = str.length() % 8;
            //截取字符串的下标
            int index = 0;
            for(int i = 1; i <= n; i++) {
                System.out.println(str.substring(index, 8 * i));
                index = 8 * i;
            }
            if(m != 0) {
                String str2 = str.substring(8 * n);
                for(int i = 0; i < 8 - m; i++) {
                    str2 += "0";
                }
                System.out.println(str2);
            }
        }  
    }
}
编辑于 2024-01-14 19:42:08 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
   Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        // 注意 hasNext 和 hasNextLine 的区别
        int n=line.length()/8;
        int m=line.length()%8;
        int start=0;
        for(int i=0;i<n;i++){
            System.out.println(line.substring(start,start+8));
            start+=8;
        }

        if(m!=0) {
            StringBuffer sb= new StringBuffer();
            String substring = line.substring(line.length() - m, line.length());
            sb.append(substring);
            for(int i=0;i<8-m;i++){
                sb.append("0");
            }
            System.out.println(sb.toString());
        }


    }
}

发表于 2023-12-21 17:54:58 回复(0)
思路:
使用substring()截取字符串,for循环遍历,i+8
import java.util.Scanner;

public class hj4 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int strLength = str.length();
        for (int i = 0; i < strLength;) {
            if((strLength-i)/8 > 0){
                System.out.println(str.substring(i,i+8));
                i = i+8;
            }else{
                System.out.println(str.substring(i,strLength)+"00000000".substring(0,8-(strLength-i)));
                break;
            }
        }
    }
}


编辑于 2023-12-19 20:50:40 回复(0)
import java.util.Scanner;
import static java.lang.Math.min;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String str = scanner.nextLine();
            int length = str.getBytes().length;
            int endIndex = 0;
            int beginIndex = 0;
            while (endIndex < length) {
                beginIndex = endIndex;
                endIndex = min(length, endIndex + 8);
                String resStr = str.substring(beginIndex, endIndex);
                while (resStr.getBytes().length != 8) {
                    resStr = resStr + "0";
                }
                System.out.println(resStr);
            }
        }
    }
}

编辑于 2023-12-14 23:40:09 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            count++;
            System.out.print(s.charAt(i));
            if (count == 8){
                count = 0;
                System.out.println();
            }
        }
        for (int i = 0; i < 8 - count; i++) {
            if (count == 0){
                break;
            }
            System.out.print(0);
        }

    }
}
编辑于 2023-12-02 18:57:38 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int len= str.length();
        int n = len / 8;
        int m = len % 8;
        for(int i = 0; i < n; i++){
            System.out.println(str.substring(i*8 , i*8+8));
        }
        if(m > 0){
            int zeroNum = 8 - m;
            String last = str.substring(8* n);
            for(int i=0; i < zeroNum;i++){
                last += "0";
            }
            System.out.println(last);
        }
    }
}
发表于 2023-11-30 21:42:20 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        str += "0000000".substring(0, str.length()%8 == 0 ? 0 : 8 - str.length() % 8);
        for(int i = 0; i < str.length(); i = i + 8){
            System.out.println(str.subSequence(i, i+8));
        }
    }
}

发表于 2023-11-28 21:25:36 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
StringBuilder sb = new StringBuilder(str);
int length = str.length();
int d = str.length()/8;
int a = str.length()%8;
for (int i= 0; i < d;i++) {
String s = sb.substring(i*8,8*(i+1));
System.out.println(s);
}
if (a > 0) {
String s = sb.substring(8*d,(8*d)+a);
StringBuilder lastS = new StringBuilder(s);
int m = 8-a;
while (m!=0) {
m--;
lastS.append("0");
}
System.out.println(lastS.toString());
}
}
}
发表于 2023-11-25 23:51:29 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String s = sc.next();
        if (s.length() == 8) {
            System.out.println(s);
        } else if (s.length() < 8) {
            for (int i = s.length(); i < 8 ; i++) {
                s += "0";
            }
            System.out.println(s);
        } else {
            int sub1 = 0;
            int sub2 = 8;
            for (int i = 0; i < s.length(); i++) {
                if (sub2 <= s.length()) {
                    String substring = s.substring(sub1, sub2);
                    System.out.println(substring);
                }
                sub1 += 8;
                sub2 += 8;
                if (sub2 > s.length()&&sub1<s.length()) {
                    int s3 = s.length() - sub1;
                    String substring1 = s.substring(sub1);
                    for (int j = 0; j < (8 - s3); j++) {
                        substring1 += "0";
                    }
                    System.out.println(substring1);
                    break;
                }
            }
        }
    }
}
你们的方法真好,羡慕你们的大脑啊。。。。。。。
发表于 2023-09-29 03:04:12 回复(2)
先补全0再直接分割
发表于 2023-09-14 19:23:18 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String data = sc.nextLine();
        int addCount =data.length() % 8;
        StringBuilder sb = new StringBuilder(data);
        if(addCount != 0){
            for(int i = 0;i<8-addCount;i++){
            sb.append("0");
            }
        }
        String tgtStr = sb.toString();
        for(int i = 0; i<tgtStr.length();i=i+8){
            System.out.println(tgtStr.substring(i,i+8));
        }
    }
}

发表于 2023-09-10 16:10:45 回复(0)
          直接先补7个0 
            String s=in.next();
            s=s+"0000000";
            for (int i = 0; i < s.length()/8; i++) {
                System.out.println(s.substring(i*8,i*8+8));
            }
发表于 2023-09-08 10:18:48 回复(2)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String inStr = in.nextLine();
        if (null != inStr && inStr.length() > 0) {
            int length = inStr.length();
            int times = length / 8;
            int last = length % 8;
            int zero = 8 - last;
            for (int i = 0; i < times; i++) {
                System.out.print(inStr.substring(i * 8, (i + 1) * 8));
                System.out.print(" ");
            }
            if (last > 0) {
                System.out.print(inStr.substring(times*8));
                for (int i = 0; i < zero; i++) {
                    System.out.print(0);
                }
            }
        }
    }
}
发表于 2023-09-07 00:58:49 回复(1)

问题信息

难度:
366条回答 135769浏览

热门推荐

通过挑战的用户

查看代码