LeetCodeに毎日挑戦してみた 67. Add Binary(Python、Go)


はじめに

無料英単語サイトE-tanを運営中の@ishishowです。

プログラマとしての能力を上げるために毎日leetcodeに取り組み、自分なりの解き方を挙げていきたいと思います。

Leetcodeとは

leetcode.com
ソフトウェア開発職のコーディング面接の練習といえばこれらしいです。
合計1500問以上のコーデイング問題が投稿されていて、実際の面接でも同じ問題が出されることは多いらしいとのことです。

golang入門+アルゴリズム脳の強化のためにgoとPythonで解いていこうと思います。(Pythonは弱弱だが経験あり)

16問目(問題67)

67. Add Binary

問題内容

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

(日本語訳)

2つのバイナリ文字列aとが与えられた場合bそれらの合計をバイナリ文字列として返します

Example 1:

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

Example 2:

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

考え方

  1. 二進数の文字列を十進数に変換します

  2. 十進数のまま数字を足して、最後に二進数の文字列に変換します。

  • 解答コード
class Solution:
    def addBinary(self, a, b):
        return bin(int(a, 2) + int(b, 2))[2:]
  • Goでも書いてみます!
import (
    "fmt"
    "math/big"
)

func addBinary(a string, b string) string {
    var A, _ = new(big.Int).SetString(a, 2)
    var B, _ = new(big.Int).SetString(b, 2)
    return fmt.Sprintf("%b", new(big.Int).Add(A, B))
}