leetcode--67--バイナリの合計


二つのバイナリ文字列をあげて、それらの和を返します.
空の文字列ではなく、数字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)
    }
    
  • 短い文字列を0に揃え、最後に巡回計算を行い、最後に反転して実際の結果を得る
  • .
    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('');
    }