• LeetCode Javascript实现 344. Reverse String 292. Nim Game 371. Sum of Two Integers


    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的逆运算是它本身,两次异或同一个数时结果不变。在学习位运算的时候,我们知道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)就计算完毕。
  • 相关阅读:
    Java实现 LeetCode 211 添加与搜索单词
    跨平台Unicode与UTF8互转代码
    C++转换unicode utf-8 gb2312编码
    c++ ANSI、UNICODE、UTF8互转
    Visual C++ unicode and utf8 转换
    Unicode和UTF-8的关系
    boost uuid 学习笔记
    boost uuid
    Darwin Streaming server 的 Task 类
    VS2010下编译安装DarwinStreamingServer5.5.5
  • 原文地址:https://www.cnblogs.com/cndotabestdota/p/5715703.html
Copyright © 2020-2023  润新知