ad如何计算电路板的pin数量_代码实战:如何在不使用计数器的情况下计算字符串中0和1的数量...

4ae5d69e5624a5c184e91c61d87a9167.png

这个问题经常在面试中被问到,以测试应聘者思考代码的方法。

问题陈述

你有一个字符串,它只包含0和1。您需要编写一个程序,它将返回0和1的数量,您不允许使用计数器变量的任何方式。

看起来复杂的对吧?

别担心,这很简单。我要教你两种方法:

  • 使用计数器(经典方法)
  • 不使用计数器(如面试问题所要求)

代码

使用计数器的解法

function count(str) { var countForZero = 0; var countForOne = 0;  for (var i = 0, length = str.length; i < length; i++) { if (str[i] === '0') { countForZero++; } else { countForOne++; } }  return { 'zero': countForZero, 'One': countForOne };}

上述代码的逻辑是:

  • 保留两个变量来计算0和1。
  • 循环遍历字符串的字符,当找到0时,递增countForZero。当找到一个1时,递增countfor1。
  • 在最后一部分中,我们将返回对象中的count。

现在,让我们看看没有计数器的解法

function count(str) { var sum = 0;  for (var i = 0, length = str.length; i < length; i++) { sum += Number(str[i]); }  return { 'zero': str.length - sum, 'One': sum };}

正如您在上面的代码中所看到的,我没有使用任何计数器,而是使用一个名为sum的变量。这里的概念是什么?

这个概念是:

包含0和1的字符串的一个字符的和总是等于1的个数。

例如:0011001:0+0+1+1+0+0+1 = 3 = 1的个数

0的个数=字符串的长度- 1的个数

上述代码的逻辑是:

  • 保持sum变量初始值为零。
  • 循环遍历字符串中的字符并取所有字符的和。
  • 字符串中所有字符的和将是1的个数,0的个数将是(字符串长度- 1的个数)。
  • 在最后一部分中,我们将返回对象中的count。

我希望你现在能明白如何用计数器和不用计数器来回答这个问题。

如果你有任何问题,请在评论区提出。如果你还有其他的诀窍,也请告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值