import java.util.*;
public class Transform {
public int calcCost(int A, int B) {
int count = 0;
String a = Integer.toBinaryString(A);
String b = Integer.toBinaryString(B);
int maxLength = Math.max(a.length(),b.length());
a = String.format("%" + maxLength + "s", a).replace(' ', '0');
b = String.format("%" + maxLength + "s", b).replace(' ', '0');
for (int i = 0; i < maxLength; i++) {
if (a.charAt(i)!= b.charAt(i)) {
count++;
}
}
return count;
}
}
首先根据题目必须要了解到,转化必须是在二进制情况下进行操作,然后我们让他们的位数保持一直,缺少的部分用0补充,此时只需要判读同位置上有多少个数字不同即可

京公网安备 11010502036488号