The challenge
Given a non-negative integer n
, write a function toBinary
/ToBinary
which returns that number in a binary format.
to_binary(1) /* should return 1 */
to_binary(5) /* should return 101 */
to_binary(11) /* should return 1011 */
Test cases
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
public class ConvertTest {
@Test
public void testToBinary() {
assertEquals(1, BinaryConvert.toBinary(1));
assertEquals(10, BinaryConvert.toBinary(2));
assertEquals(11, BinaryConvert.toBinary(3));
assertEquals(101, BinaryConvert.toBinary(5));
}
}
The solution in Java
public class BinaryConvert {
public static int toBinary(int n) {
// Use the `toBinaryString` method of the Integer class
// convert it back to an `int` using the `parseInt` method of the Integer class
// return the result
return Integer.parseInt(Integer.toBinaryString(n));
}
}
Alternative 1:
public class BinaryConvert {
public static int toBinary(int n) {
return Integer.valueOf(Integer.toBinaryString(n));
}
}
Alternative 2 (doing it all manually):
public class BinaryConvert {
public static int toBinary(int n) {
int multiplier = 1;
int value = 0;
do {
value += (n % 2) * multiplier;
n /= 2;
multiplier *= 10;
} while (n > 0);
return value;
}
}
Alternative 3 (doing it in a ternary):
public class BinaryConvert {
public static int toBinary(int n) {
return n>1 ? toBinary(n/2) * 10 + n%2 : n;
}
}