標籤:
今天表弟突然問我一道C的字串的題目:
問題描述
對於長度為5位的一個01串,每一位都可能是0或1,一共有32種可能。它們的前幾個是:
00000
00001
00010
00011
00100
請按從小到大的順序輸出這32種01串。 輸入格式 本試題沒有輸入。
輸出格式
輸出32行,按從小到大的順序每行一個長度為5的01串。
範例輸出
00000
00001
00010
00011
由於沒有C環境,於是用java實現如下:
int first, second, third, fourth, fifth; for (first = 0; first <= 1; first ++) { for (second = 0; second <= 1; second++) { for (third = 0; third <= 1; third++) { for (fourth = 0; fourth <= 1; fourth++) { for (fifth = 0; fifth <=1; fifth++) { System.out.println(first + "" + second + "" + third + "" + fourth + "" + fifth); } } } } }
後來想想如果01字串的長度發生變化,這迴圈該怎麼寫,後來轉而實現如下:
int n = 4; int maxNum = 0; String maxStr = ""; for (int k = 0; k < n; k++) { maxStr += "1"; } maxNum = Integer.valueOf(maxStr, 2); //二進位轉十進位 for (int i = 0; i <= maxNum; i++) { BigInteger s = new BigInteger(i + ""); //轉換為BigInteger類型 String b = s.toString(2); //轉換為2進位 String before = ""; if (b.length() < n) { for (int j = 0; j < (n - b.length()); j++) { before += "0"; } } System.out.println(before + b); }
java之01字串