面试题 05.01. 插入(c++/python)位运算

面试题 05.01. 插入(c++/python)位运算_第1张图片
面试题 05.01. 插入(c++/python)位运算_第2张图片

class Solution {
public:
    int insertBits(int N, int M, int i, int j) {
//按题目的意思,并不是把 M 移位后和 N 相加,而只是单纯地覆盖。所以可以分两步进行:
// 把 N 中 i - j 的位置置零先
// 把 M 左移 i 位后和 N 相加
        for(int k=i;k<=j;k++){
            N = N&~(1<<k);
        }
        M = M<<i;
        return (M+N);
    }
};
class Solution:
    def insertBits(self, N: int, M: int, i: int, j: int) -> int:
        for k in range(i,j+1):
            N = N &~(1<<k)
        return N | (M<<i)

#将第i位变为0:
#n=n&~(1<

你可能感兴趣的:(力扣刷题笔记,c++,python,开发语言)