在 JavaScript 中查找一个范围内的顺序数字


顺序数字

一个数字只有当且仅当数字中的每个数字比前一个数字多 1 时才具有顺序数字。

问题

我们要求编写一个 JavaScript 函数,该函数采用一个包含正好两个元素并指定一个范围的数组 arr。

我们的函数应该返回一个已排序的数组,其中包含 arr(包括极限)范围内的所有具有顺序数字的整数。

例如,如果函数的输入是 -

const arr = [1000, 13000];

那么输出应该是 -

const output = [1234, 2345, 3456, 4567, 5678, 6789, 12345];

Learn JavaScript in-depth with real-world projects through our JavaScript certification course. Enroll and become a certified expert to boost your career.

示例

代码如下 -

 演示

const arr = [1000, 13000];
const sequentialDigits = ([low, high] = [1, 1]) => {
   const findCount = (num) => {
      let count = 0;
      while(num > 0){
         count += 1
         num = Math.floor(num / 10)
      };
      return count;
   };
   const helper = (count, start) => {
      let res = start;
      while(count > 1 && start < 9){
         res = res * 10 + start + 1;
         start += 1;
         count -= 1;
      };
      if(count > 1){
         return 0;
      };
      return res;
   };
   const count1 = findCount(low);
   const count2 = findCount(high);
   const res = [];
   for(let i = count1; i <= count2; i++){
      for(let start = 1; start <= 8; start++){
         const num = helper(i, start);
         if(num >= low && num <= high){
            res.push(num);
         };
      };
   };
   return res;
};
console.log(sequentialDigits(arr));

输出

控制台中的输出如下 -

[
   1234, 2345,
   3456, 4567,
   5678, 6789,
   12345
]

更新于:2021 年 4 月 7 日

333 次浏览

推动你的 职业

通过完成课程获得认证

开始
广告