嘿嘿嘿
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();
}
}
}