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(...)
添加回答
舉報