leetcode--67--バイナリの合計
1022 ワード
二つのバイナリ文字列をあげて、それらの和を返します.
空の文字列ではなく、数字1と0だけを入力します.例1:
入力:a=「11」、b=「1」出力:「100」
例2:
入力:a=「1010」、b=「1011」出力:「10101」
ヒント:各文字列は文字‘0’または‘1’だけで構成されます.1<=a.length、b.length<=10^4文字列が「0」でなければ、プリアンブルゼロは含まれません.をバイナリ に変換します.短い文字列を0に揃え、最後に巡回計算を行い、最後に反転して実際の結果を得る .
空の文字列ではなく、数字1と0だけを入力します.例1:
入力:a=「11」、b=「1」出力:「100」
例2:
入力:a=「1010」、b=「1011」出力:「10101」
ヒント:各文字列は文字‘0’または‘1’だけで構成されます.1<=a.length、b.length<=10^4文字列が「0」でなければ、プリアンブルゼロは含まれません.
const addBinary = (a, b) => {
return (parseInt(a, 2) + parseInt(b, 2)).toString(2)
}
const addBinary = (a, b) => {
let ans = "";
// ca , sum, , ca 1, 0
let ca = 0;
for(let i = a.length - 1, j = b.length - 1;i >= 0 || j >= 0; i--, j--) {
let sum = ca;
sum += i >= 0 ? parseInt(a[i]) : 0;
sum += j >= 0 ? parseInt(b[j]) : 0;
// ,
ans += sum % 2;
//
ca = Math.floor(sum / 2);
}
// ,
ans += ca == 1 ? ca : "";
// ,
return ans.split('').reverse().join('');
}