码:
function OneDecremented(num) {
num = num.toString()
var count = 0
for(i = 1; i < num.length; i++) {
if(num[i - 1] - num[i] === 1){
count++
}
}
return count
}
console.log(OneDecremented(9876541110))
所以我在努力理解两件事:
抱歉,如果这些问题听起来太愚蠢,我是JS的新手,无法真正理解算术计算。谢谢您的时间。
该代码编写不当是出于几个原因,但最重要的是,它会i
全局泄漏引用,因此,让我们从一个更好的版本开始:
function OneDecremented(num) {
var str = num.toString();
var count = 0;
for(var i = 1; i < str.length; i++) {
if(str[i - 1] - str[i] === 1)
count++;
}
return count;
}
在现代JS中,字符串可以像数组一样进行访问,并且索引在以下index
位置返回char :
if(str[i - 1] - str[i] === 1)
// is the same as
if ((str.charAt(i - 1) - str.charAt(i)) === 1)
检索到每个字符后,由于操作员的缘故,该代码执行了隐式的“字符到数字”转换,-
但是如果+
不是,它将把两个字符串联为字符串(因此请小心)。
明确一点总是更好,但是如果您知道如何-
工作,它将完成此任务。
循环从开始1
,并检查at处的char i - 1
,它是第一次迭代中index处的char0
减去当前char,即1
当前char小于上一个char 。
在这种情况下,计数器会求和。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句