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

Chỉ là số nhỏ hơn với các chữ số đơn điệu trong JavaScript

Chữ số tăng đơn điệu

Một số nguyên có các chữ số tăng đơn điệu nếu và chỉ khi mỗi cặp chữ số liền kề x và y thỏa mãn x <=y.

Vấn đề

Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một số, num, làm đối số đầu tiên và duy nhất.

Hàm của chúng ta sẽ chỉ đơn giản là tìm số lớn nhất nhỏ hơn hoặc bằng num với các chữ số tăng dần đều.

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

Đầu vào

const num = 332;

Đầu ra

const output = 299;

Ví dụ

Sau đây là mã -

const num = 332;
const monotoneIncreasingDigits = (num) => {
   const checkMonotone = (x) =>{
      if (x <= 9) {
         return true
      }
      let currentDigit = x % 10
      while (x) {
         const next = Math.floor(x / 10)
         const nextDigit = next % 10
         if (currentDigit >= nextDigit) {
            currentDigit = nextDigit
            x = next
         } else {
            return false
         }
      }
      return true
   }
   if (checkMonotone(num)) {
      return num
   }

   const digits = num.toString().split('').map(x => Number(x))
   return digits.reduce((acc, num, index) => {
      if (num >= 1) {
         const current = parseInt(digits.slice(0, index).join('') + num - 1 + new Array(digits.length - index - 1).fill('9').join(''), 10)
         if (checkMonotone(current)) {
            return Math.max(
            acc,current)
         }
      }
      return acc
   }, 0)
}
console.log(monotoneIncreasingDigits(num));

Đầu ra

299