题目
给定一个非负整数n
,编写一个函数toBinary/ToBinary
以二进制格式返回该数字。
测试用例:
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
public class KataTest {
@Test
public void testToBinary() {
assertEquals(1, Kata.toBinary(1));
assertEquals(10, Kata.toBinary(2));
assertEquals(11, Kata.toBinary(3));
assertEquals(101, Kata.toBinary(5));
}
}
解答
我的
public class Kata {
public static int toBinary(int n) {
return Integer.parseInt(Integer.toBinaryString(n));
}
}
别人的:
务实
public class Kata {
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;
}
}
偷懒
public class Kata {
public static int toBinary(int n) {
String binaryString = Integer.toBinaryString(n);
return Integer.parseUnsignedInt(binaryString);
}
}
思考
这里的parseUnsignedInt()和parseInt()看源码注释是区别于带不带符号,但是我并没有看出区别,囧。