1 回答
TA贡献1891条经验 获得超3个赞
你误解了“最伟大的”。您不必添加数字,而是将所有5个连续的数字作为数字。你可以这样写:
let pending = digits[i]*10000 + digits[i+1]*1000 + digits[i+2]*100 + digits[i+3]*10 + digits[i+4];
事实上,如果你不乘以,12345会给你1 + 2 + 3 + 4 + 5 = 15,但你必须得到12345,而不是15。
另外,您必须在结束前5位数字停止循环:
for (let i = 0; i < digits.length-4; i++) {
另一个错误是您转换为数字的数组:
digits = digits.split('').map(x=>+x);
您的解决方案如下所示:
function solution(digits){
digits = digits.split('').map(x=>+x);
let solution = 0;
for (let i = 0; i < digits.length -4 ; i++) {
let pending = digits[i]*10000 + digits[i+1]*1000 + digits[i+2]*100 + digits[i+3]*10 + digits[i+4];
if (pending > solution) {
solution = pending;
}
}
return solution;
}
这就是我本来会做的:
function solution(digits){
return Math.max(...digits.split('').map((x,i,a)=>+(a.slice(i, i+5).join(''))))
}
你拿“数字”,然后创建一个数组,其中包含所有分隔的数字:
digits.split('')
使用此数组,对于每个索引 (i),您将 5 个连续数字的序列放入另一个数组中:
.map((x,i,a)=>a.slice(i, i+5)
您加入以下数字:
.join()
你把它转换成一个数字:
+
您最多服用:
Math.max(...)
添加回答
举报