LeetCode Javascript実現344.Reverse String 292.Nim Game 371.Sum of Two Integers

4119 ワード

344.Reverse String
/**
* @param {string} s
* @return {string}
*/
var reverseString = function(s) {
return s.split("").reverse().join("");
};
 
292.Nim Game
ニムゲームはやはり面白いです.この問題は理解できるところが多いです.
/**
* @param {number} n
* @return {boolean}
*/
var canWinNim = function(n) {
if(0 === n%4){
return false;
}
return true;

};

//        ,LeetCode    0         ===   ==

 371.Sum of Two Integers 
この問題は主にビット演算をテストします.
①異種またはxorの逆演算はそれ自体であり、2回の異数または同じ数の場合は結果は変わりません.ビット演算を勉強する時、XORの重要な特性は進数加算ではないことを知っています.次に進数を見つけたら、XORの結果と合わせて、最後の答えになります.
 * @param {number} a
 * @param {number} b
 * @return {number}
 */
var getSum = function(a, b) {
    var c1 = a^b;
    var d = a&b;
    while(d!==0){
        d = d<<1;
        c2 = c1^d;
        d = c1&d;
        c1 = c2;
    }
    
    return c1;
};

//    
 0 1 1 — a ==3
 1 0 1 — b ==5
——————————
 1 1 0c1
 0 0 1 — d
 0 1 0 — d=d<<1
 1 0 0 — c2=c1^d
 0 1 0 — d=c1&d
 1 0 0 — c1=c2
——————————
 1 0 0 — d=d<<1
 0 0 0 — c2=c1^d
 1 0 0 — d=c1&d
 0 0 0 — c1=c2
——————————
1 0 0 0 — d=d<<1
1 0 0 0 — c2=c1^d
0 0 0 0— d=c1&d
1 0 0 0 — c1=c2
// — , — 1, <<1 , a,b axorb a&b , (a&b==0) 。