Add Binary

2534 ワード

! また挑戦するつもりです.

質問する


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

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

Example 2:

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

ろんり


私の考えの論理

  • かな...私は問題を理解できますが、コードでこれを解決するのは難しいようです.うーん、二つの論理を考えた.1つはバイナリで計算し、もう1つは10進数のように計算し、バイナリで再計算します.
    論理1
    1)配列方法を使いたいので、空の配列を作成し、繰り返しの扉を回って後ろから計算を開始します.
    2)1を足すと1をそのまま片側に置き、2を足すと0を片側に置き、演算に1を足す.
    3)3を足すと1は移動せず、次の演算に1を足す.
    4)最後の演算に加算された値が2または3の場合、前の位置に1を加算する.
    論理.
    1)パラメータ形式で入力された文字列a,bは,まずParseIntにより10進数として計算される.
    2)加算値をstringに変換し、値の中に2がある場合はその位置に0、前に1を加算します.
    3)2)の結果が3であれば1を返し,前に1を加える.
    4)直前の演算が2,3以上であれば0または1を返し,文字列の前に1を加える.
  • に答える

  • という簡単な質問ですが、私にはわかりにくく、時間がかかりました.答えの中身がわからず、
    1)おおよそのやり方(理解していなければ本当にお勧め、おじさんが面白すぎて説明も良い)
  • の好きなアルゴリズム解説ビデオBack To Back SWE講座を見て、このことを知りました.
  • のプロセスはfind carries(アップロードする数を検索)->DotheAddress(値を追加)->carriesを左に1つ移動して計算するプロセスです.
    2)十進数解題
  • に置き換える
  • は私が考えている論理と少し似ているようですが、後から10進数で計算した値によって、残りはハードコーディングのようですか?自分で設定して価格を入れる方式のようですが…?
    3)メソッドで叩く、、、(でもとても大きな整数を扱うことができなかったので、答えを間違えました…)
  • 文字列に入力された値に対してParseIntを行い、2番目のパラメータで進数を適用できるのでParseInt(a,2)のように適用することができ、aとbを加えた値が10進数であるため、LettosString(2)を用いてバイナリに変換する.(不思議なことにnumber.toString()の場合、()に希望の陣法を入れると、それに応じて...)
  • に答える


    2)
    var addBinary = function(a, b) {
        const result = [];
        a = a.split('');
        b = b.split('');
        let remainder = 0;
        
        while (a.length || b.length || remainder) {
            const el1 = parseInt(a.pop(), 10) || 0;
            const el2 = parseInt(b.pop(), 10) || 0;
            
            const sum = el1 + el2 + remainder;
            
            if (sum === 3) {
                result.unshift('1');
                remainder = 1;
            } else if (sum === 2) {
                result.unshift('0');
                remainder = 1;
            } else if (sum === 1) {
                result.unshift('1');
                remainder = 0;
            } else {
                result.unshift('0');
                remainder = 0;
            }
        }
        
        return result.join('');
    };
    3)
    var addBinary = function(a, b) {
    return (parseInt(a, 2)+parseInt(b,2)).toString(2);
    };