iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
自我挑戰組

30天 Leetcode解題之路系列 第 13

Day 13 - Add Binary

大家好,我是毛毛。ヾ(´∀ ˋ)ノ
廢話不多說開始今天的解題Day~


67. Add Binary

Question

Given two binary strings a and b, return their sum as a binary string.


Example

Example1

Input: a = "11", b = "1"
Output: "100"

Example2

Input: a = "1010", b = "1011"
Output: "10101"

Constraints

  • 1 <= a.length, b.length <= 10^4
  • a and b consist only of '0' or '1' characters.
  • Each string does not contain leading zeros except for the zero itself.

解題

題目

首先先簡單的翻譯一下題目
給兩個二進制的數字字串,回傳兩者相加後的值。

Think

作法大致上是這樣

  • 直接將兩個數都轉成int並相加,再去判斷相加後的每一位數字有沒有大於2,有的話就代表要進位,下一個位數的值再判斷有沒有大於2之前要先加上進位的值。
  • 最後,如果到第一位數了,還有需要進位的話,就在最前面再補上一個1,就可以回傳了。

Code

Python

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        flag_add = False
        int_a = int(a)
        int_b = int(b)
        
        sum = int_a + int_b
        sum = list(str(sum))
        
        for index in range(len(sum)-1, -1, -1):
            if flag_add:
                sum[index] = str(int(sum[index]) + 1) 
                flag_add = False
                
            if int(sum[index]) >= 2:
                sum[index] = str(int(sum[index]) - 2) 
                flag_add = True
                if index == 0:
                    sum.insert(0, "1")

        sum = str(sum).replace("[", "").replace("'", "").replace(",", "").replace("]", "").replace(" ", "")
        return sum

C


Result

  • Python

  • C

大家明天見/images/emoticon/emoticon29.gif


上一篇
Day 12 - Length of Last Word
下一篇
Day 14 - Valid Palindrome
系列文
30天 Leetcode解題之路30

1 則留言

0
soft_soft
iT邦新手 5 級 ‧ 2021-10-08 20:37:35

數數字囉1

我要留言

立即登入留言