自己写的:
class Solution: def findComplement(self, num: int) -> int: # 初始化一个空字符串,用于存储二进制表示 bin_str = '' # 将输入的数字转换为二进制表示,存储在 bin_str 中 while num > 0: bin_str = str(num % 2) + bin_str num //= 2 # 初始化一个空字符串,用于存储按位取反后的二进制表示 reversed_bin_str = '' # 对原始二进制表示进行按位取反操作,存储在 reversed_bin_str 中 for bit in bin_str: if bit == '1': reversed_bin_str += '0' else: reversed_bin_str += '1' # 去除按位取反后的二进制表示中的前导零 trimmed_bin_str = reversed_bin_str.lstrip('0') # 计算去除前导零后的二进制表示所代表的十进制数值 n = len(trimmed_bin_str) decimal_value = 0 for i in range(n): # 按位将二进制数转换为十进制数 decimal_value += int(trimmed_bin_str[i]) * 2 ** (n - i - 1) # 返回最终结果 return decimal_value
标签:bin,数字,二进制,reversed,Leedcode,num,按位,str,补数 From: https://www.cnblogs.com/yyyjw/p/18187189