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 ]