首页 > 试题广场 >

字符串分隔

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

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

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

输入描述:

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



输出描述:

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

示例1

输入

abc

输出

abc00000
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
            String str = in.nextLine();
            int strLength = str.length();
            //初始化补位列,补到8的倍数
            //也可以直接加8位0最后截取8的倍数
            if(strLength%8!=0){
                for(int i = 0; i < 8-strLength%8;i++){
                    str +="0";
                }
            }
            //System.out.println(str);
            for (int i = 0; i < strLength; i+=8) {
                System.out.println(str.substring(i,i+8));
            }
    }
}

发表于 2024-10-21 10:42:21 回复(0)
import java.io.*;
/**字符串分隔
 *描述
 * •输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
 *
 * •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
 * 输入描述:
 * 连续输入字符串(每个字符串长度小于等于100)
 *
 * 输出描述:
 * 依次输出所有分割后的长度为8的新字符串
 *
 * 示例1
 * 输入:abc
 *
 * 输出: abc00000
 *
 */
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();
        int strLen = line.length();
        int index = 0;
        StringBuilder sb = new StringBuilder();
        while (index < strLen) {
            if (index + 8 <= strLen) {
                // 如果剩余字符大于等于8个,直接取出8个字符并追加换行符
                sb.append(line, index, index + 8).append("\n");
            } else {
                // 如果剩余字符不足8个,取出剩余字符并补0,再追加换行符
                String subStr = line.substring(index);
                int len_ = 8 - subStr.length();
                sb.append(subStr);
                for (int i = 0; i < len_; i++) {
                    sb.append("0");
                }
                sb.append("\n");
            }
            index += 8;
        }
        System.out.print(sb.toString());
    }
}


发表于 2024-09-22 11:05:22 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();
        int tirrger = 0;
        int length = input.length();
        if (length < 8) {
            System.out.print(input);
            for (int i = 8 - length; i > 0; i--) {
                System.out.print("0");
            }
        } else if (length >= 8) {
            for (int a = 0; a < length; a++) {
                if (tirrger < 8) {
                    System.out.print(input.charAt(a));
                    tirrger = tirrger + 1;
                } else {
                    tirrger = 1;
                    System.out.print("\n" + input.charAt(a));
                }
            }
            if (tirrger < 8) {
                for (int b = 0; b < 8 - tirrger; b++) {
                    System.out.print("0");
                }
            }
        }
    }
}

发表于 2024-09-10 22:10:00 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int length1 = 8;
        int length2 = str.length();
        if (length2 < length1) {
            int val = length1 - length2;
            for (int i = 0; i < val; i++) {
                str = str.concat("0");
            }
            System.out.print(str);
        } else if (length2 > length1 && length2 <= 100) {
            float num1 = (float) 100 / length1;
            int num2 = Math.round(num1);
            int num0 = 0;
            for (int j = 0; j < num2; j++) {
                int prefix = j + num0;
                int suffix = prefix + length1 < 100 ?  prefix + length1 : prefix +
                             (100 - prefix);
                String str2 = str.substring(prefix, suffix);
                num0 += length1 - 1;
                System.out.println(str2);

            }

        } else {
            System.out.println("字符串长度不能超过100位!");
        }
    }
}

发表于 2024-09-05 17:36:23 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //连续输入多个字符串
        while(sc.hasNextLine()){
            String s =new String(sc.nextLine());
            //如果输入空字符串则跳过处理
            if(s.isEmpty())
            {
                continue;
            }
            //处理字符串,按8个为一组进行分割
            while(s.length()>=8)
            {
                //输出前八个字符
                System.out.println(s.substring(0,8));
                //截断前八个字符
                s = s.substring(8);
            }
            //剩余不足八位的处理
            if(s.length()>0)
            {
                StringBuilder lastpart = new StringBuilder(s);
                //差几位添几个0
                while(lastpart.length()<8)
                {
                    lastpart.append('0');
                }
                System.out.println(lastpart.toString());
            }
        }
    }
}
发表于 2024-08-21 16:52:16 回复(0)
import java.io.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int start = 0;
        int end = 0;
        for (int i = 0; i < str.length() / 8; i++) {
            end = start + 8;
            System.out.println(str.substring(start, end));
            start = end;
        }
        if (str.length() > start) {
            String endStr = str.substring(start, str.length());
            for (int i = endStr.length(); i < 8; i++) {
                endStr += "0";
            }
            System.out.println(endStr);
        }
    }
}
发表于 2024-08-12 16:34:49 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int len = str.length();
        int bb = len/8;
        int z = -8;
        int x = 0;
        if(bb==0){
            int c = 8-len;
            for(int i=0;i<c;i++){
                str = str+"0";
            }
            System.out.println(str);
        }else{
        for(int i=0;i<bb;i++){
            z = z+8;
            x = x+8;
            String sub = str.substring(z,x);
            System.out.println(sub);
        }
            String qw = str.substring(x);
           int c = 8-len%8;
           if(c!=8){
            for(int i=0;i<c;i++){
                qw = qw+"0";
            }
            System.out.println(qw);
           }
        }
    }
}
发表于 2024-07-31 12:16:52 回复(0)
参考了大佬的思路,补全字符串后分段打印
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str = scanner.nextLine();
            separateStr(str);
        }
    }

    public static void separateStr(String str) {
        StringBuilder sb = new StringBuilder();
        sb.append(str);
        while (sb.length() % 8 > 0) {
            sb.append("0");
        }
        String sbString = sb.toString();
        while (!sbString.isEmpty()) {
            System.out.println(sbString.substring(0, 8));
            sbString = sbString.substring(8);
        }
    }
}


发表于 2024-06-29 22:25:43 回复(0)
System.out.println(s.substring(0, 8)+" ");
发表于 2024-06-27 03:00:11 回复(0)
就算是新手,用基本数据类型也可以做的。

import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String string = in.nextLine();
        int currentPos = 0;
        for (int i = 0; i < string.length() / 8; i++) {
            System.out.println(string.substring(currentPos,currentPos + 8));
            currentPos = currentPos + 8;
        }
        if (string.length() % 8 > 0) {
            StringBuilder sb = new StringBuilder("00000000");
            sb.replace(0,string.length() % 8, string.substring(currentPos));
            System.out.println(sb);
        }

    }
}


发表于 2024-06-13 12:25:50 回复(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();
        if (s.isEmpty()) {
            System.out.println();
            return;
        }

        int cur = 0;

        int seg = s.length() / 8;
        int lack = s.length() % 8;

        for (int i = 0; i < seg; i++) {
            System.out.println(s.substring(i * 8, (i + 1) * 8));
        }

        if (lack != 0) {
            int needZero = 8 - lack;
            String t = s.substring(s.length()- lack, s.length());
            StringBuilder sb = new StringBuilder();
            for (int k = 0; k < needZero; k++) {
                sb.append("0");
            }
            System.out.println(t + sb.toString());
        }
    }
}
1、判断是否为空串;
2、对s进行除8获取共有几个片段,循环输出分割的片段;
3、对s剩余需要补0的进行处理。

发表于 2024-06-06 23:58: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 line = in.nextLine();
        // 初始化将要打印的字符串
        String initStr = "00000000";
        char[] charArray = line.toCharArray();
//      预期结果
        char[] res = initStr.toCharArray();
        for (int i = 0; i < charArray.length; i++) {
            // 每8个重置1次
            if (i % 8 == 0) {
                String str = new String(res);
//                首次跳过,(因为0%8=0)
                if (!initStr.equals(str)) {
                    System.out.println(str);
                    res = initStr.toCharArray();
                }
            }
//          将0替换掉
            res[i % 8] = charArray[i];
        }

//        打印最终的剩余
        String str = new String(res);
        if (!initStr.equals(str)) {
            System.out.println(new String(res));
        }

    }
}

发表于 2024-06-05 16:50:30 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            test(str);
        }
    }

    private static void test(String s) {
        if (s == null || s.length() == 0)
            return;

        char[] arr = new char[8];
        for (int i = 0; i < s.length(); i++) {
            int index  = (i + 1) % 8;
            if (index == 0) {
                arr[7] = s.charAt(i);
                System.out.println(new String(arr));
                arr = new char[8];
            } else
                arr[index - 1] = s.charAt(i);

            if (index != 0 && i == s.length() - 1) {
                for (int j = 0; j < arr.length; j++) {
                    if (arr[j] == '\0')
                        arr[j] = '0';
                }
                System.out.println(new String(arr));
            }
        }
    }
}

发表于 2024-06-01 23:00:46 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();
        // 计算需要补充的0的数量
        int padding = 8 - (input.length() % 8);

        // 在字符串末尾补充0
       StringBuilder builder = new StringBuilder(input);
       
        // 在字符串末尾补充0
        if (padding != 8) {
            for (int i = 0; i < padding; i++) {
                builder.append("0");
            }
        }
       
        // 拆分字符串并输出
        for (int i = 0; i < builder.length(); i += 8) {
            System.out.println(builder.substring(i, Math.min(i + 8, builder.length())));
        }
        }
    }
发表于 2024-05-09 01:40:04 回复(0)
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)