嘿嘿嘿

0 基础练习 01 字串

问题描述:

对于长度为 5 位的一个 01 串,每一位都可能是 0 或 1,一共有 32 种可能。它们的前几个是:

00000 00001 00010 00011 00100

请按从小到大的顺序输出这 3 2种 01 串。

输入格式:

本试题没有输入。

输出格式:

输出 32 行,按从小到大的顺序每行一个长度为 5 的 01 串。

样例输出:

00000 00001 00010 00011

<以下部分省略>

1 做题思路 & 注意事项

从 0 到 31 进行遍历,处理好之后输出。

2 参考代码(Java)

排在后面的代码比前面的代码 CPU 使用少,内存占用少。

这个是先转成二进制 String 型,然后用 DecimalFormat 进行格式化。

import java.text.DecimalFormat;
public class Main {
    public static void main(String[] args) {
        for(int i=0;i<32;i++) {
        	String a =Integer.toBinaryString(i);
        	DecimalFormat df =new DecimalFormat("00000");  // 5 位数,不足就补 0
        	System.out.println(df.format(Integer.parseInt(a)));
        }
    }
}

这个也是先转成二进制 String 型,然后根据长度输出。

public class Main {
    public static void main(String[] args) {
        for(int i=0;i<32;i++) {
        	String str=Integer.toBinaryString(i);
        	if(str.length()==5)
        		System.out.println(str);
        	else if(str.length()==4)
        		System.out.println(0+str);
        	else if(str.length()==3)
        		System.out.println("00"+str);
        	else if(str.length()==2)
        		System.out.println("000"+str);
        	else
        		System.out.println("0000"+str);
        }
    }
}

这个最快,内存最少。

public class Main {
    public static void main(String[] args) {
        for(int i=0;i<32;i++) {
        	System.out.print(i%32/16);
        	System.out.print(i%16/8);
        	System.out.print(i%8/4);
        	System.out.print(i%4/2);
        	System.out.print(i%2);
        	System.out.println();
        }
    }
}