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补充,此时只需要判读同位置上有多少个数字不同即可