ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LeetCode每日刷题Day16---L476数字的补数

2019-08-30 14:35:49  阅读:271  来源: 互联网

标签:数字 L476 异或 Day16 num Integer 思路 补数


L476数字的补数

思路与结果

在这里插入图片描述

代码思路1

package Day16_6_5.L476;

/**
 * 思路1
 1. 三个思路都是通过与1异或的方法去实现的,关键就在于怎样去寻找这个异或对象的大小
 2. 通过Integer.toBinaryString()方法,将数字转成二进制字符串
 3. 根据字符串长度l,设置一个2^l-1大小的数字,其二进制表示就长度未L的11111···
 4. 返回  这个数字与原数字的异或值即可。
 反思
 1. 用了Integer.toBinaryString()和Math.pow()两个方法,有点麻烦,直接通过移位来寻找该数字。

 */
public class Solution {
    public int findComplement(int num) {
        //与每一位都是1的数字异或即可。
        String s = Integer.toBinaryString(num);
        double a = Math.pow(2, s.length()) - 1;
        return (int)a ^ num;
    }
}

代码思路2

package Day16_6_5.L476;

/**
 * 思路2
 1. 先通过Integer.toBinaryString()方法,将数字转成二进制字符串
 2. 设置变量c=0
 3. 根据其长度循环
 a. C = (c << 1)+1
 b. 这样就可以根据原数字的长度,找到同样长度的11111···
 4. 异或返回
 反思
 1. 还是用到了Integer.toBinaryString()方法,还可以更简单

 */
public class Solution2 {
    public int findComplement(int num) {
        String s = Integer.toBinaryString(num);
        int c =0;
        for (int i = 0; i < s.length(); i++) {
            c = (c << 1) + 1;
        }
        return num ^ c;
    }
}

代码思路3

package Day16_6_5.L476;

/**
 * 思路3
 1. 先用temp存储原num值
 2. while循环,条件为temp > 0
 a. Temp 右移一位
 b. C = (c << 1)+1
 c. 这样其实就是通过temp的移位,确定二进制的位数
 3. 异或返回

 */
public class Solution3 {
    public int findComplement(int num) {
        int temp = num;
        int c =0;
        while (num > 0){
            num >>= 1;
            c = (c << 1 ) + 1;
        }
        return temp^ c;
    }
}

标签:数字,L476,异或,Day16,num,Integer,思路,补数
来源: https://blog.csdn.net/weixin_42252770/article/details/100156393

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有