同步更新于个人博客系统:二进制求和
同步更新于个人博客系统:二进制求和
同步更新于个人博客系统:二进制求和
题目描述:
  
 
''
 给你两个二进制字符串,返回它们的和(用二进制表示)。
 输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
 输入: a = "11", b = "1"
 输出: "100"
 示例 2:
输入: a = "1010", b = "1011"
 输出: "10101"
 提示:
每个字符串仅由字符 '0' 或 '1' 组成。
 1 <= a.length, b.length <= 10^4
 字符串如果不是 "0" ,就都不含前导零。
 '''
解法:
根据十进制转二进制和二进制转十进制的规则分别编写转换函数,其中二进制转十进制可以利用内置函数int进行转换
class Solution:
     def addBinary(self, a: str, b: str) -> str:
        a_tenth_num = self.binary_to_tenth(a)
         b_tenth_num = self.binary_to_tenth(b)
         a_add_b = a_tenth_num + b_tenth_num
return self.tenth_to_binary(a_add_b)
    # 二进制转十进制
     def binary_to_tenth(self, binary_num: str) -> int:
         return int(binary_num,2) #直接使用内置函数int进行转换
#编写自己的转换方法
        # res = 0
         # k = len(binary_num) - 1
         # for i in binary_num:
         #     if i == '1':
         #         res += pow(2, k)
         #     k -= 1
         # return res
    # 十进制转二进制
     def tenth_to_binary(self, tenth_num: int) -> str:
        # tenth_num:商 remainder:余数 binary_str:结果(二进制)
         binary_str = f'{tenth_num % 2}'
        while tenth_num > 1:
             tenth_num = tenth_num // 2
             # remainder = tenth_num % 2 #节省空间,提交时省略
             binary_str += f'{tenth_num % 2}'
             # print(f'余数:{remainder} {binary_str}')
        binary_str_res = ''
         for i in range(len(binary_str) - 1, -1, -1):
             binary_str_res += binary_str[i]
return binary_str_res
if __name__ == '__main__':
     a = '11'
     b = '10'
     print(Solution().addBinary(a, b))
最优的一次提交:

 收藏本文 0
有什么想对作者说的吗?










