2016-11-28 15 views
0

バイナリ文字列の左にゼロを追加する方法を見つけるのを助けてください。ここではうまくいくと思っていますが、0を除いてバイナリを出力します。バイナリ文字列の左側にゼロを追加する - Java

package flipping_bits; 
import java.io.*; 
import java.util.*; 

public class Solution { 

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 

    int cases = input.nextInt();  //Número de casos 

    int[] dec_nums=new int[cases];  //Arreglo contenedor de casos 
    for (int i=0;i<cases;i++){ 
     dec_nums[i]=input.nextInt(); //Almacenamiento de casos 
    } 

    int[] bin_nums=new int[cases]; //Arreglo con dec-bin 
    for (int i=0;i<cases;i++){    
     bin_nums[i]=Integer.parseInt(String.format("%032d",(Integer.parseInt(Integer.toBinaryString(dec_nums[i]))))); //Convertir cada decimal en el arreglo a binario 
    } 


    //Imprimir binarios 
    for (int i=0; i<cases;i++){ 
     System.out.println(bin_nums[i]); 
    } 

} 
} 
+0

はあなたが読んでいるからファイル入力を提供することができますか?また、私はこれがhackerrank.comのようなアルゴリズムトレーニングサイトからのものであると仮定しています。そうであれば、そこでの議論を確認することができます – vlatkozelka

+0

それは[https://www.hackerrank.com/challenges/flipping-bits]からです。私は既に議論のセクションをチェックし、誰もJavaを使っていませんでした。まあ、教授に私がどのようにそれを解決したかを説明しなければならないので、理解できるコードは見つけられませんでした。 –

答えて

1

'0' 私はあなたを理解していれば質問を正しく入力してbin_numsint[]からString[]に変更し、フォーマットした整数を解析しないと、整数の32ビット表現になります。

public static void main(String[] args) { 


    Scanner input = new Scanner(System.in); 

    int cases = input.nextInt();  //Número de casos 

    int[] dec_nums=new int[cases];  //Arreglo contenedor de casos 
    for (int i=0;i<cases;i++){ 
     dec_nums[i]=input.nextInt(); //Almacenamiento de casos 
    } 

    String[] bin_nums=new String[cases]; //Arreglo con dec-bin 
    for (int i=0;i<cases;i++){    
     bin_nums[i]=(String.format("%032d",(Integer.parseInt(Integer.toBinaryString(dec_nums[i]))))); //Convertir cada decimal en el arreglo a binario 
    } 


    //Imprimir binarios 
    for (int i=0; i<cases;i++){ 
     System.out.println(bin_nums[i]); 
    } 

} 

これは結果と私のテストケースである:

3 
1 
2 
3 
00000000000000000000000000000001 
00000000000000000000000000000010 
00000000000000000000000000000011 

しかし、これはトリックをしないかもしれないが、あなたは通常、最適な方法でそれを解決するためにあなたを必要とするいくつかのアルゴリズムの問​​題を解決しようとするかもしれないと仮定し、制限時間を超えている可能性があります。

それが原因Solutionという名前のクラスの運動とコードのスタイル、のように思える例:テストケース、テストケースの数...

+0

ありがとうございます!それはまさに私が望んでいたものです。そして確かに、実際にはHackerRankのアルゴリズムのセクションから、ビットを具体的に反転しています。この後、私はすべての32ビットを反転し、10進数で最後の数字を印刷する必要があります。あなたは私に何を示唆しますか? –

+0

私は、ビット単位の操作の基本と "カンニング"を学ぶことをお勧めします。 http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/ – vlatkozelka

0

次の例でおアレイ内の各進数の前に0を追加します。

bin_numにする[0] = thisBinarynumber updatedNumber = + thisBinarynumber

関連する問題