[Leetcode] 476. Number Complement


Description:
Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.
Note:
  • The given integer is guaranteed to fit within the range of a 32-bit signed integer.
  • You could assume no leading zero bit in the integer’s binary representation.

  • Example:
    Input: 5
    Output: 2
    Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
    Input: 1
    Output: 0
    Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.

    P.S.
    Javaの10進数変換:https://www.cnblogs.com/vsign/p/7290594.html
    class Solution {    public int findComplement(int num) {
           //int t = 0;
           //int bin = 0;
           int r = 0;
           int result = 0;
           List a = new ArrayList();
           List b = new ArrayList();
           while(num != 0){
               r = num % 2;
               num = num/2;
             //bin = r * Math().pow(10,t);
               a.add(r);
             //t++; 
          }
           for (Integer c : a){
              if (Integer.valueOf(c) == 1){
                  int lin = 0;
                  Integer Lin = Integer.valueOf(lin);
                  b.add(Lin);
              }else {
                  int yi = 1;
                  Integer Yi = Integer.valueOf(yi);
                  b.add(Yi);
              }       
           }
           for (int i = 0; i < b.size(); i++){
               result = result + ((int)Math.pow(2,(double)i) * Integer.valueOf(b.get(i)));//powで使用する(a,b)はdoubleタイプのデータでなければなりません.Math.powのすべてのデータ型はdoubleタイプでなければなりません.intからdoubleに変換するには(double)iが必要です
           }
           return result;
        }
    }