Add Binary
2534 ワード
! また挑戦するつもりです.
質問する
かな...私は問題を理解できますが、コードでこれを解決するのは難しいようです.うーん、二つの論理を考えた.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()の場合、()に希望の陣法を入れると、それに応じて...) に答える
質問する
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"
ろんり
私の考えの論理
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101"
私の考えの論理
論理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)おおよそのやり方(理解していなければ本当にお勧め、おじさんが面白すぎて説明も良い)
2)十進数解題
3)メソッドで叩く、、、(でもとても大きな整数を扱うことができなかったので、答えを間違えました…)
に答える
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);
};
Reference
この問題について(Add Binary), 我々は、より多くの情報をここで見つけました
https://velog.io/@sgr2134/Add-Binary진행중
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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('');
};
var addBinary = function(a, b) {
return (parseInt(a, 2)+parseInt(b,2)).toString(2);
};
Reference
この問題について(Add Binary), 我々は、より多くの情報をここで見つけました https://velog.io/@sgr2134/Add-Binary진행중テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol