Разбор задачи 7. Reverse Integer LeetCode.com

Обратное целое

Получив 32-битное целое число со знаком x, верните xего цифры в обратном порядке . Если реверсирование xприводит к тому, что значение выходит за пределы диапазона 32-разрядных целых чисел со знаком , то возвращается значение .[-231, 231 - 1]0

Предположим, что среда не позволяет хранить 64-битные целые числа (со знаком или без знака).

Пример 1:

Вход: х = 123
 Выход: 321

Пример 2:

Вход: х = -123
 Выход: -321

Пример 3:

Вход: х = 120
 Выход: 21
Ограничения:
-231 <= x <= 231 - 1

Решение данной задачи может быть достигнуто путем преобразования целого числа со знаком в строку, а затем обращения этой строки и преобразования ее обратно в целое число. Для этого можно использовать следующий алгоритм:

  1. Преобразуйте целое число в строку.
  2. Обратите строку.
  3. Преобразуйте обращенную строку в целое число.
  4. Проверьте, находится ли это число в диапазоне 32-разрядных целых чисел со знаком. Если нет, верните 0.

Вот реализация этого алгоритма на разных языках программирования:

Решение задачи «Обратное целое» пример кода на Python

class Solution(object):
    def reverse(self, x):
        # Проверяем, отрицательное ли число
        if x < 0:
            # Преобразуем отрицательное число в строку, убираем знак минуса,
            # обращаем строку, добавляем знак минуса
            s = str(-x)
            s = '-' + s[::-1]
        else:
            # Преобразуем положительное число в строку и обращаем ее
            s = str(x)[::-1]
        # Преобразуем строку в целое число
        res = int(s)
        # Проверяем, находится ли целое число в диапазоне 32-разрядных целых чисел со знаком
        if res < -2**31 or res > 2**31 - 1:
            # Если нет, то возвращаем 0
            return 0
        else:
            # Если да, то возвращаем обратное число
            return res

Решение задачи «Обратное целое» пример кода на Java

class Solution {
    public int reverse(int x) {
        String s;
        if (x < 0) {
            // Преобразуем отрицательное число в строку, убираем знак минуса,
            // обращаем строку, добавляем знак минуса
            s = String.valueOf(-x);
            s = "-" + new StringBuilder(s).reverse().toString();
        } else {
            // Преобразуем положительное число в строку и обращаем ее
            s = new StringBuilder(String.valueOf(x)).reverse().toString();
        }
        // Преобразуем строку в целое число
        int res = Integer.parseInt(s);
        // Проверяем, находится ли целое число в диапазоне 32-разрядных целых чисел со знаком
        if (res < -Math.pow(2, 31) || res > Math.pow(2, 31) - 1) {
            // Если нет, то возвращаем 0
            return 0;
        } else {
            // Если да, то возвращаем обратное число
            return res;
        }
    }
}

Решение задачи «Обратное целое» пример кода на C++

class Solution {
public:
    int reverse(int x) {
		// создаем переменную для хранения результата, используем long для обработки переполнения
        long res = 0; 
		// пока x не станет равным 0
        while (x != 0) { 
            // умножаем res на 10 и добавляем последнюю цифру числа x
			res = res * 10 + x % 10; 
            // удаляем последнюю цифру из числа x
			x /= 10; 
        }
		// проверяем, не выходит ли результат за пределы диапазона int
        if (res < INT_MIN || res > INT_MAX) { 
			// если выходит, возвращаем 0
            return 0; 
        }
		// возвращаем результат, приведенный к типу int
        return (int) res; 
    }
};

Решение задачи «Обратное целое» пример кода на JavaScript

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
	// превращаем число в строку, разбиваем ее на массив символов, переворачиваем и объединяем обратно в строку
    let s = x.toString().split("").reverse().join(""); 
    // если число отрицательное
	if (x < 0) { 
        // добавляем минус перед перевернутой строкой (за исключением последней цифры, которая была знаком)
		s = "-" + s.substring(0, s.length - 1); 
    }
	// преобразуем строку в число
    let res = parseInt(s); 
	// проверяем, не выходит ли результат за пределы диапазона 32-битных чисел со знаком
    if (res < -Math.pow(2, 31) || res > Math.pow(2, 31) - 1) { 
        // если выходит, возвращаем 0
		return 0; 
    }
    // возвращаем результат
	return res; 
};

Решение задачи «Обратное целое» пример кода на C#

public class Solution {
    public int Reverse(int x) {
        // создаем переменную для хранения результата
		long res = 0; 
        // пока исходное число не обнулится
		while (x != 0) { 
            // умножаем результат на 10 и добавляем последнюю цифру числа x
			res = res * 10 + x % 10; 
			// убираем последнюю цифру числа x
            x /= 10; 
        }
		// проверяем, не выходит ли результат за пределы диапазона 32-битных чисел со знаком
        if (res < int.MinValue || res > int.MaxValue) { 
            // если выходит, возвращаем 0
			return 0; 
        }
        // возвращаем результат, приведенный к типу int
		return (int) res; 
    }

}

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x