向着6级跑出的第一步
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

Description:

Write a function that takes an (unsigned) integer as input, and returns the number of bits that are equal to one in the binary representation of that number.

Example:

The binary representation of 1234 is 10011010010, so the function should return 5 in this case

菜鸟出招

var countBits = function(n) {
  // Program Me
  var a = 0;
  var s = n.toString(2);
  for (var i in s) {
    if (s[i] == 1) a++;
  }
  return a;
};

偷师学艺

var countBits = function(n) {
  return n.toString(2).split('1').length - 1;
};

关键字积累

  • split

菜鸟反思

7级的题目并不比8级难多少,反正在高手眼里都是小菜一碟。

而从步入7级开始,我们的做题思路和思维方式就应该逐步做一些改变。

奇葩一朵

var countBits = function (n) {
  // from http://graphics.stanford.edu/~seander/bithacks.html
  n = n - ((n >>> 1) & 0x55555555);
  n = (n & 0x33333333) + ((n >>> 2) & 0x33333333);
  return ((n + (n >>> 4) & 0xF0F0F0F) * 0x1010101) >>> 24;
};

>>> 为无符号右移运算,>> 为有符号右移运算。

相出这个答案的人,大脑是有多复杂啊,就是不知道运算效率和上面两个答案比怎样。

评论
发表评论
暂无评论
WRITTEN BY
BoltDoggy
A doggy named Bolt.
TA的新浪微博
PUBLISHED IN
My Code Wars 我的代码战争【休息一下】

这里讲述的是一个8级(kyu)菜鸟立志成为8段(dan)大神的故事。

他在代码战争中一次次遭遇挫败,而又在乱炖中获得高人指点。

遥想当年自高自大,而今终知天外有天。

坚持要走出一条自己的路,这是一条不归路。


Bolt 在写underscore.js源码分析专栏的时候发现了一个问题,就是看别人写的代码的时候自认为看懂了,但实际上有理解错误自己也不知道。

另外就是看了再牛逼的代码,自己写的时候,还是那些小套套。

于是 Bolt 开了一个新专栏:My Code Wars 我的代码战争。在同一需求下,菜鸟写的代码与大神有什么区别,是思维方式不同,还是什么原因导致的?

欢迎大家来新专栏提供意见和建议。

我的收藏