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 &#61; function(a, b) {var c1 &#61; a^b;var d &#61; a&b;while(d!&#61;&#61;0){d &#61; d<<1;c2 &#61; c1^d;d &#61; c1&d;c1 &#61; c2;}return c1;
};//总之就是0 1 1 — a &#61;&#61;31 0 1 — b &#61;&#61;5
——————————1 1 0 — c10 0 1 — d0 1 0 — d&#61;d<<11 0 0 — c2&#61;c1^d0 1 0 — d&#61;c1&d1 0 0 — c1&#61;c2
——————————1 0 0 — d&#61;d<<10 0 0 — c2&#61;c1^d1 0 0 — d&#61;c1&d0 0 0 — c1&#61;c2
——————————
1 0 0 0 — d&#61;d<<1
1 0 0 0 — c2&#61;c1^d
0 0 0 0— d&#61;c1&d
1 0 0 0 — c1&#61;c2
//关键就是异或—不进位加法&#xff0c;与运算—进位处为1&#xff0c;与运算再<<1则相当于进位数&#xff0c; a,b两个数字将axorb后再加上a&b的值&#xff0c;一直重复到没有进位&#xff08;a&b&#61;&#61;0&#xff09;就计算完毕。