Skip to content

2595.奇偶位数

https://leetcode.cn/problems/number-of-even-and-odd-bits/

给你一个 整数 n

even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。

odd 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的奇数下标的个数。

请注意,在数字的二进制表示中,位下标的顺序 从右到左

返回整数数组 answer ,其中 answer = [even, odd]

示例 1:

输入:n = 50

输出:[1,2]

解释:

50 的二进制表示是 110010

在下标 1,4,5 对应的值为 1。

示例 2:

输入:n = 2

输出:[0,1]

解释:

2 的二进制表示是 10

只有下标 1 对应的值为 1。

提示:

  • 1 <= n <= 1000
python
from typing import List
class Solution:
    def evenOddBit(self, n: int) -> List[int]:
        s = bin(n)[2:][::-1]
        even, odd = 0, 0
        for i in range(len(s)):
            if i & 1:
                if s[i] == '1':
                    odd += 1
            else:
                if s[i] == '1':
                    even += 1

        return [even, odd]

if __name__ == "__main__":
    sol = Solution()
    print(sol.evenOddBit(2))
python
from typing import List

class Solution:
    def evenOddBit(self, n: int) -> List[int]:
        even, odd = 0, 0
        index = 0
        while n > 0:
            if n & 1:  # Check if the least significant bit is 1
                if index % 2 == 0:
                    even += 1
                else:
                    odd += 1
            n >>= 1  # Shift right to process the next bit
            index += 1
        
        return [even, odd]

if __name__ == "__main__":
    sol = Solution()
    print(sol.evenOddBit(2))  # Example input