Функция reverse(int x)
инвертирует десятичные цифры x
.Например, если x = 102
, он возвращает 201
, а если x = -102
, он возвращает -201
.
. Когда вычисляется обратное значение x
, оно сохраняется в rev
.Например, для x = 102
, rev
принимает последовательные значения 2
, 20
, 201
.
. На каждой итерации rev
умножается на 10
и одну цифру.добавляется к нему.Конечно, rev
не может быть больше Integer.MAX_VALUE
(2147483647
).Таким образом, перед умножением rev
на 10
мы проверяем, умножит ли его на 10
и добавит ли pop
значение, превышающее Integer.MAX_VALUE
.
Сначала мы проверим, больше ли rev
чем Integer.MAX_VALUE / 10
(214748364
).Если оно больше, обратное целое число не существует.Если нет, то rev
меньше или равно Integer.MAX_VALUE / 10
.Если оно меньше Integer.MAX_VALUE / 10
, то даже если мы умножим его на 10
, мы можем добавить к нему любую цифру (pop
), и мы не превысим Integer.MAX_VALUE
.Однако, если оно равно Integer.MAX_VALUE / 10
, то мы должны убедиться, что pop
не равно > 7
(2147483647 - 214748364 * 10
), поскольку в противном случае мы превысим Integer.MAX_VALUE
.
.до Integer.MIN_VALUE
(2147483648
).