Binary Gap
找一个int中两个1之间最大的距离. 先把int变成string, 然后找每个1的gap, 然后取最大.
找一个int中两个1之间最大的距离. 先把int变成string, 然后找每个1的gap, 然后取最大.
给个整数, 数一. 因为是Integer,所以一共32位. 1 << i 就是每个位上的1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
public String addBinary(String a, String b) { // int carry=0; // String result=""; // int i=0; // int alen=a.length(); // int blen=b.length(); // while(i<alen||i<blen||carry!=0){ // int x=(i<alen)?((a.charAt(alen-1-i)=='1')?1:0):0; // int y=(i<blen)?((b.charAt(blen-1-i)=='1')?1:0):0; // result=(x+y+carry)%2+result; // carry=(x+y+carry)/2; // i++; int carry = 0; String res = ""; int i = 0; int aLen = a.length(); int bLen = b.length(); while(i < aLen || i < bLen || carry != 0) { int x = 0; int y = 0; if(i < aLen && a.charAt(aLen - 1 -i) == '1') x = 1; if(i < bLen && b.charAt(bLen - 1 -i) == '1') y = 1; res = (x+y+carry) % 2 + res; carry = (x+y+carry) / 2; i++; } return res; } |
1 2 3 4 5 6 7 8 9 |
public int countOnes(int num) { // write your code here int res = 0; for(int i = 0 ; i < 32; i++) { if((num & (1<<i)) != 0) res++; } return res; } |