• 461. Hamming Distance


    https://leetcode.com/problems/hamming-distance/

    将两个二进制数比较,输出不同位数的个数

    Input: x = 1, y = 4
    
    Output: 2
    
    Explanation:
    1   (0 0 0 1)
    4   (0 1 0 0)
           ↑   ↑

    解题思路:
    此题考察的是知识点是运算符,特别是异或运算符^
    异或运算符作用为“相同出0,不同出1”,这个特性正好可以用来解题
    那么正常的思路就是将x,y两数进行异或运算,然后统计1的出现次数

    解法(Python):

    1 class Solution(object):
    2     def hammingDistance(self, x, y):
    3         return bin(x^y).count("1");

    这个解法其实很low的,首先用了bin()函数,作用是将异或结果二进制化为字符串,然后利用字符串函数count统计1出现的次数并输出

      优秀解法评析(Java):

    1 public int hammingDistance(int x, int y) {
    2     int xor = x ^ y, count = 0;
    3     for (int i=0;i<32;i++) count += (xor >> i) & 1;
    4     return count;
    5 }

    由于题目有限制0 ≤ x, y < 231

    所以这个解法将异或结果一个个移位,然后和1和运算,自然相同为1,不同为0,然后用count器加上这个相同的1自然就是“1出现的次数”

  • 相关阅读:
    http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
    JS中的动态合集与静态合集
    对联
    诗词
    文言文
    Youth Is Not a Time of Life
    JS探秘——那些你理解存在偏差的问题
    JS中的加号+运算符详解
    支持HTTP2协议
    银行卡信息查询接口
  • 原文地址:https://www.cnblogs.com/TheLaughingMan/p/6216336.html
Copyright © 2020-2023  润新知