461. Hamming Distance
来源:互联网 发布:濮阳市公务员网络 编辑:程序博客网 时间:2024/05/23 16:22
题目描述【Leetcode】
The Hamming distance between two integers is the number of positions at which the corresponding bits are different.
Given two integers x and y, calculate the Hamming distance.
Note:
0 ≤ x, y < 231.Example:
Input: x = 1, y = 4
Output: 2Explanation:
1 (0 0 0 1)
4 (0 1 0 0)The above arrows point to positions where the corresponding bits are different.
这道题是比较两个数的二进制形式的不同位的个数。
方法一:
用数组来将每个数二进制的每一位,再进行比较,这个比较麻烦:
class Solution {public: int hammingDistance(int x, int y) { vector<int>q1; vector<int>q2; int count = 0; while(x != 0){ int m = x%2; x = x/2; q1.push_back(m); } while(y != 0){ int m = y%2; y = y/2; q2.push_back(m); } while(q1.size() > q2.size()){ q2.push_back(0); } while(q1.size() < q2.size()){ q1.push_back(0); } for(int i = 0; i < q1.size(); i++){ if(q1[i] != q2[i]) count++; } return count; }};
方法二:利用bitset来做:
class Solution {public: int hammingDistance(int x, int y) { bitset<64>b1(x); bitset<64>b2(y); int count = 0; for(int i = 0; i < b1.size(); i++){ if ((b1.test(i) && !b2.test(i)) || (!b1.test(i) && b2.test(i))) count++; } return count; }};
方法三:用按位“异或”运算符和按位“与”赋值运算符来做,这种办法运行起来更快(运算符参考资料)
class Solution {public: int hammingDistance(int x, int y) { int n = x^y; // n为x与y的异或 int count = 0; while(n) { if((n >> 1) << 1 != n) // 判断n右移一位再左移一位是否会变 count++; n >>= 1; } return count;}};
阅读全文
0 0
- LeetCode 461. Hamming Distance
- 461. Hamming Distance
- 【Leetcode】461. Hamming Distance
- 461. Hamming Distance
- LeetCode 461. Hamming Distance
- 461. Hamming Distance
- LeetCode - 461. Hamming Distance
- 461. Hamming Distance*
- LeetCode-461. Hamming Distance
- 461. Hamming Distance
- 【LeetCode】 461. Hamming Distance
- 461. Hamming Distance
- 461. Hamming Distance#1
- 461. Hamming Distance
- Leetcode-461. Hamming Distance
- 461. Hamming Distance
- Leetcode 461. Hamming Distance
- 461. Hamming Distance
- nRF52832 — 矩阵键盘
- ubunt 14 下安装jenkins
- vs2010下C++调用DLL以及怎么生成DLL和为什么使用DLL
- FZU 2271 X (Floyd)(第七届福建省大学生程序设计竞赛)
- 欢迎使用CSDN-markdown编辑器
- 461. Hamming Distance
- Linux16.04解决:在源列表 /etc/apt/sources.list.d/google-chrome.list 中第 1 行有误 (类型) E: 无法读取源列表。
- 数据库高可用和分区解决方案-MySQL 篇
- Qt pro 文件详解(转载,来源未知,转的地方也没有标明来源)
- C++ class和struct的区别
- MyBatis_结合Spring_Oracle批量插入
- 在Ubuntu16-04版本上搭建离线免费地图osm(二)
- Error
- JetBrains激活