LeetCodeHamming Distance
Posted xy123001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCodeHamming Distance相关的知识,希望对你有一定的参考价值。
问题网址 https://leetcode.com/problems/hamming-distance/
就是一个异或后,求1的位数的问题。
看到问题之后,首先困扰是: int能不能求异或?是不是要转成二进制才可以?
答案是肯定的。直接 x^y 就行了。
然后就是统计位数的问题了
答案一:https://discuss.leetcode.com/topic/72636/c-simple-solution-0ms
liupeng的答案
int hammingDistance(int x, int y) { int tmpInt=x^y; int dis=0; while(tmpInt) { if((tmpInt>>1)<<1 != tmpInt)
//tmpInt右移一位,再左移动一位,相当于最后一位设为0;如果等于原数,就证明原来最后一位就是0.反之,是1
// 很巧妙 { ++dis; } tmpInt>>=1; } return dis; }
后话
如果真的要转成二进制,可以转成字符串
char str[10];
itoa(tmpInt, str, 2);
这个2 可以自由发挥了。别的进制也可以。
以上是关于LeetCodeHamming Distance的主要内容,如果未能解决你的问题,请参考以下文章
错误1error LNK2019: 无法解析的外部符号 "public: __thiscall Distance::Distance(int)" (??0Distance@@QAE
72. Edit Distance && 161. One Edit Distance
Damerau–Levenshtein distance (Edit Distance with Transposition) c 实现