Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm số chữ số liên tiếp trong một phạm vi trong JavaScript

Số thứ tự chữ số

Một số có các chữ số liên tiếp nếu và chỉ khi mỗi chữ số trong số đó nhiều hơn chữ số trước đó một chữ số.

Vấn đề

Chúng tôi bắt buộc phải viết một hàm JavaScript nhận vào một mảng, arr, của chính xác hai phần tử chỉ định một phạm vi.

Hàm của chúng ta sẽ trả về một mảng được sắp xếp gồm tất cả các số nguyên trong phạm vi arr (bao gồm các giới hạn) có các chữ số liên tiếp.

Ví dụ:nếu đầu vào của hàm là -

const arr = [1000, 13000];

Sau đó, kết quả đầu ra phải là -

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

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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