题目要求:
思路:
先用 Integer 的 toBinaryString() 方法将 m 和 n 转成二进制字符串,再通过 StringBuffer 的 reverse() 方法反转字符串好操作二进制从低位开始的 i,j 下标,同时可以调用 StringBuffer 的 replace() 方法替换 i ~ j 之间的部分为 0,再替换 j ~ M.length() 之间的部分为 m,最后反转转换成字符串后通过 Integer 的 parseInt() 进制转换方法返回即可。
代码如下:
import java.util.*;
public class Test4_27 {
public int binInsert(int n, int m, int j, int i) {
String strN = Integer.toBinaryString(n);
String strM = Integer.toBinaryString(m);
String M = new StringBuffer(strM).reverse().toString();
StringBuffer sbN = new StringBuffer(strN).reverse();
String zero = "";
for (int k = j; k < i + 1; k++) {
zero += '0';
}
sbN.replace(j,i + 1,zero);
sbN.replace(j,j + M.length(),M);
String res = sbN.reverse().toString();
return Integer.parseInt(res,2);
}
}