题目详情
任意给定两个字符串,比如:
A: 00001001000001110000000000100001
B: 00101000000101110000010000100001
要求:按字面转换为字节数组,并且计算A和B的汉明距离(有多少位不同),程序执行时间最少为优胜者。
代码:
package com.ausky.work.pongo;
/**
* 题目详情
*
*
* 任意给定两个字符串,比如:
*
* A: 00001001000001110000000000100001 B: 00101000000101110000010000100001
*
* 要求:按字面转换为字节数组,并且计算A和B的汉明距离(有多少位不同),程序执行时间最少为优胜者。
*
* @author xn-hyao-01
*
*/
public class Pongo_1001 {
public static void main(String[] args) {
String num1 = "00001001000001110000000000100001";
String num2 = "00101000000101110000010000100001";
// 异或 求出不同的地方
Integer check = Integer.parseInt(num1, 2) ^ Integer.parseInt(num2, 2);
int step = 0;
// 2^n 与 2^-1 的 和 运算 为0
while (check > 0) {
check = check & (check - 1);
step++;
}
System.out.println(step);
}
}