Số có chữ số tuần tự
Một số có chữ số tuần tự nếu mỗi chữ số lớn hơn chữ số trước đúng 1 đơn vị.
Mô tả vấn đề
Chúng ta cần viết hàm JavaScript nhận vào mảng arr đúng 2 phần tử chỉ định khoảng. Hàm trả về mảng đã sắp xếp tất cả số nguyên trong khoảng (bao gồm hai đầu) có chữ số tuần tự.
Ví dụ, nếu đầu vào là:
const arr = [1000, 13000];
Thì đầu ra nên là:
const output = [1234, 2345, 3456, 4567, 5678, 6789, 12345];
Ví dụ minh họa
Mã thực hiện (sinh tất cả số tuần tự có độ dài trong khoảng):
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
Kết quả trong console sẽ là:
[ 1234, 2345, 3456, 4567, 5678, 6789, 12345 ]