问题描述
我尝试在JavaScrip中解决此算法,但无法实现。我已经用Java完成了,但是找不到解决方法的方法就是JS。如果有人可以告诉我并向我解释解决方案,我将不胜感激:)算法:
查找介于0和给定正整数(包括两个端点)之间的所有整数中给定数字出现的频率。
让我们说要计数的数字(我们称之为K)是2。
因此,在0到35之间,K(在本例中为2)出现了14次:
2、12、20、21、22(两次),23、24、25、26、27、28、29 32 = 14次
输入
输入包含2行。 第一行包含程序需要计数的数字(K)。 第二行包含数字N,它是检查K是否出现的范围内的最大数字(例如,介于0和N之间)。 所有数字均为正整数。没有小数或小数。
打印出现在0到N之间(包括两者)的K数。 如果找不到,则打印0。
谢谢。
解决方法
可能的解决方案,可能会更有效。
let k = String(2);
let n = 35;
let s = String("");
// create string from numbers 0 to n
for (let i = 0; i <= n; i++) s += i;
// check each character for digit
let occurs = s.split('').reduce((a,x) => x === k ? a + 1 : a,0);
// print result
console.log(occurs);