2016-11-28 4 views
0

바이너리 문자열의 왼쪽에 0을 더하는 방법을 찾도록 도와 주시겠습니까? 여기서는 작동 할 것이라고 생각했지만 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

이해 경우 질문을 올바르게 입력했으면 bin_numsint[]에서 String[]으로 변경하고 포맷 한 정수를 구문 분석하지 않으면 정수 32 비트 표현으로 끝납니다.

이 439,317,192,839,599,669,443,210 내 테스트 결과와 사건 :이 트릭을

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 = '0'이 + thisBinarynumber