代码:
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
位置处的字符:
if(str[i - 1] - str[i] === 1)
// is the same as
if ((str.charAt(i - 1) - str.charAt(i)) === 1)
一旦检索到每个字符,代码就会进行隐式的“字符到数字”转换,这要归功于-
运算符,但如果它是一个+
,它就会将两个字符连接为字符串(所以,要小心)。
明确总是更好,但如果你知道如何-
工作,它就可以完成这项任务。
循环从 开始1
,并检查i - 1
在第一次迭代中索引处的字符0
减去当前字符后的字符是1
,这意味着当前字符比前一个字符少一个。
在这种情况下,计数器会累加。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句