Неделя е за кодиране: днес работих върху алгоритъм за обратно цяло число!
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.
Източник: