首页 > 编程 > C++ > 正文

Leetcode-461. Hamming Distance C++解

2019-11-10 20:36:59
字体:
来源:转载
供稿:网友

自己想的解题思路是先做XOR操作得到不同位的序列,然后统计其中1的个数。具体统计方法为,和1相与得到只保留了最后一位的中间结果,判断最后一位是否为1,若为1则说明有一个1,然后右移重复操作即可

class Solution {public:    int hammingDistance(int x, int y) {    	int v_xor = x ^ y;    	int c = 0;    	int r = 0;    	cout << v_xor << endl;           	while(v_xor != 0){    		r = v_xor & 1;    		if(r != 0){    		  c++;    		}    		v_xor /= 2;    	}    	return c;    }};网上看到使用n & (n-1)可以直接去掉最右边的1,看起来方便很多,结果submit都是3ms,没变快orz。具体代码变为

class Solution {public:    int hammingDistance(int x, int y) {    	int v_xor = x ^ y;    	int c = 0;    	int r = 0;    	cout << v_xor << endl;           	while(v_xor != 0){    		v_xor =v_xor &( v_xor-1);    		  c++;    	}    	return c;    }};


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选