【5 kyu】Largest 5 digit number in a series

原題目

In the following 6 digit number:
283910
91 is the greatest sequence of 2 digits.javascript

In the following 10 digit number:
1234567890
67890 is the greatest sequence of 5 digits.java

Complete the solution so that it returns the largest five digit number found within the number given. The number will be passed in as a string of only digits. It should return a five digit integer. The number passed may be as large as 1000 digits.git

題目:找出一個數值(該數值將以字符串的形式傳入)中最大的五位數。

My Solution

  • 若是數字的位數小於6,則直接返回該數值
  • 若是數字的位數不小於六位,則依次截取連續的5位數,求取最大值
function solution(digits){
  if(digits < 100000) return Number(digits);
  
  var maxNum = digits.substr(0, 5);
  
  for(var i=1, l=digits.length - 4; i<l; i++) {
    maxNum = Math.max(maxNum, digits.substr(i, 5));
  }
  return maxNum;
}

Clever

function solution(digits){
  if (digits.length <= 5) return Number(digits);
  return Math.max(Number(digits.substr(0, 5)), solution(digits.substr(1)));
}

對比

Clever Solution中使用了遞歸。code

可是遞歸每次調用都會在內存中開闢新的空間,若數據過大,很容易引發堆棧溢出。遞歸

相關文章
相關標籤/搜索