Неделя е за кодиране: днес работих върху алгоритъм за обратно цяло число!

Leetcode го маркира като лесен, но ми отне известно време, за да го получа. Има много начини за решаване на този проблем и този може да е малко тромав, така че не се колебайте да го преработите! Освен това една от целите ми беше да практикувам методите МатематикаиЧисла, които не съм прилагал от известно време.

И така, нашата задача е:

Дадено е 32-битово цяло число със знак x, върнете x с обърнати цифри. Ако обръщането на x доведе до излизане на стойността извън 32-битовия целочислен диапазон със знак, тогава върнете 0.

Ето решение стъпка по стъпка:

function reverseInt(x) {
   // step 1: Make the number positive (Math.abs) and turn it into a string
    let string = Math.abs(x).toString();
    let arr = [];
   //step 2: Push each string (aKa digit) in the reversed order into an empty array 
    for(let i = string.length - 1; i >= 0; i--) {
      arr.push(string[i])
    }
    // step 3: Turn the reversed string into a number
    let result = Number(arr.join(''));
   // step 4: If reversing causes the value to go outside the signed 32-bit integer range, return 0
    if (result > 2 ** 31 - 1) {
      return 0;
    }
    // step 5: if x is negative, turn the final number negative
    if (x < 0) {
      let result *= -1;
    }    return result;
  };

Надяваме се, че този бърз преглед е бил полезен! За повече опции, моля, разгледайте Дискусионната дъска на Leetcode.

Източник:

  1. Leetcode