亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的代碼戰腳本未通過測試 ..?(系列中最大的 5 位數字)

我的代碼戰腳本未通過測試 ..?(系列中最大的 5 位數字)

ibeautiful 2022-09-23 09:17:38
這里的腳本初學者。我正在嘗試代碼戰(挑戰)卡塔。它一直告訴我,我的解決方案不起作用,我想知道為什么。如何修復代碼以使其正常工作?以下是問題的內容。"Complete the solution so that it returns the greatest sequence of five consecutive digits found within the number given.""1234567890" - 67890 is the greatest sequence of 5 consecutive digits.鏈接到卡塔:https://www.codewars.com/kata/51675d17e0c1bed195000001/train/javascript我的代碼:function solution(digits){  digits = +digits.split('');  let solution = 0;  for (let i = 0; i < digits.length; i++) {    let pending = digits[i] + digits[i+1] + digits[i+2] + digits[i+3] + digits[i+4];    if (pending > solution) {      solution = pending;    }  }  return solution;}最佳/最解釋的答案將獲得綠色復選標記。讓我知道我的解決方案有點多余也不會有什么壞處 謝謝!
查看完整描述

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(...)


查看完整回答
反對 回復 2022-09-23
  • 1 回答
  • 0 關注
  • 84 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號