Я понял логику решения проблемы, но в закодированном решении меня немного смущает оператор return в конце. Пожалуйста, объясните мне, каково его значение, почему оно используется и т. д.? (не почему используется возврат, а почему это значение возвращается).
class Solution {
public boolean isPalindrome(int x) {
// 2 cases x < 0 = false case
// x > 0 = test case
if (x < 0 || x % 10 == 0 && x != 0){
return false;
}
else {
int newNum = 0;
while (x > newNum){
int r = (x % 10);
newNum = newNum * 10 + r;
x /= 10;
}
//the part I am confused about - below
return x == newNum || x == newNum / 10;
}
}
}
Итак, чтобы понять логику оператора return, давайте возьмем 2 числа.
Итак, одна вещь, которую здесь делает цикл While, - это создание нового числа (newNum) из X и обеспечение того, чтобы newNum сохранял обратную сторону X до средней точки.
Таким образом, в случае 1234321 этот цикл while будет выполняться до тех пор, пока X=123 и newNum=1234.
После выхода из цикла while с этими значениями из двух возвращаемых операторов x == newNum / 10 даст истинный результат, поэтому оператор return вернет true. Это означает, что число является палиндромом.
Обратите внимание, что нет. цифры в данном целом числе нечетные (7)
Давайте теперь возьмем другой пример 678876
В этом случае, когда цикл while завершится, значение для X будет 678, а newNum будет 678.
из двух возвращаемых операторов x == newNum на этот раз даст истинный результат, поэтому оператор return снова вернет true. Это означает, что число является палиндромом.
Обратите внимание, что нет. цифры в заданном целом числе четные(6)
В общем, этот оператор возвращает x == newNum || х == новое число / 10; заключается в том, чтобы убедиться, что мы покрываем условие как для нечетного, так и для четного нет. цифр в данном целом числе X.
Рад, что помогло!
Ах, я вижу, Теперь я полностью понимаю это. Кажется, меня смутило объяснение, которое там было дано. Теперь я понял это полностью, спасибо большое.