zoukankan      html  css  js  c++  java
  • leetcode算法题-461.汉明距离

    题目

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
    给出两个整数 x 和 y,计算它们之间的汉明距离。
    注意:
    0 ≤ x, y < 231.
    示例:
    输入: x = 1, y = 4
    输出: 2
    解释:
    1 (0 0 0 1)
    4 (0 1 0 0)
    --- -- ↑ - ↑
    上面的箭头指出了对应二进制位不同的位置。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/hamming-distance
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    我的解法

    class Solution {
        public int hammingDistance(int x, int y) {
            char[] x1 = Integer.toBinaryString(x).toCharArray();
            char[] y1 = Integer.toBinaryString(y).toCharArray();
            if(x1.length > y1.length){
                char[] temp = x1;
                x1 = y1;
                y1 = temp;
            }
            char[] c1 = new char[y1.length];
            int length = c1.length - x1.length;
            for (int i = 0; i < c1.length; i++) {
                if(i < length){
                    c1[i] = '0';
                }else{
                    c1[i] = x1[i-length];
                }
            }
            int result = 0;
            for (int i = 0; i < y1.length; i++) {
                if(y1[i] != c1[i]){
                    result++;
                }
            }
            return result;
        }
    }
    
    

    简单明了的思路,将两个参数转为二进制字符串然后比较。

    题解版

    class Solution {
        public int hammingDistance(int x, int y) {
            return Integer.bitCount(x ^ y); 
        }
    }
    

    一行代码就解决了这道题目,对我造成了10万吨级的伤害!!!
    这道题目用异或的位运算,在统计1的个数就是答案。
    平时自己开发中异或基本没用到,通过这道题目加深对异或的运用。

  • 相关阅读:
    Javascript逻辑运算认识
    Javascript基本数据认识
    python爬虫数据提取之bs4的使用方法
    权限和频率组件的使用
    版本控制和认证组件的使用
    drf中View和router的详解
    Serializers组件详解
    REST架构简介
    模型层中QuerySet的学习
    最全总结!聊聊 Python 发送邮件的几种方式
  • 原文地址:https://www.cnblogs.com/chwwww/p/14247425.html
Copyright © 2011-2022 走看看