Java-проверка чисел-палиндромов: алгоритмы с while и for циклами
Что такое число-палиндром?
Число-палиндром читается одинаково слева направо и справа налево. Примеры: 121, 393, 48084. Они демонстрируют вертикальную осевую симметрию и часто используются в алгоритмических головоломках.
В Java проверки палиндромов часты в собеседованиях и кодинг-челленджах. Алгоритм прост, но может быть реализован несколькими способами.
Обзор алгоритма
- Прочитать входное целое.
- Реверснуть его цифры и сохранить результат.
- Сравнить реверснутое число с оригиналом.
- Если совпадают — число палиндром; иначе — нет.
Проверка с while-циклом
Ниже лаконичная Java-программа, использующая while цикл для реверса числа и определения палиндрома. Код печатает промежуточные шаги для иллюстрации процесса.
package com.guru99;
public class PalindromeNum {
public static void main(String[] args) {
int inputNumber = 171; // число для проверки
int reversed = 0;
int temp = inputNumber;
while (temp > 0) {
int lastDigit = temp % 10;
reversed = (reversed * 10) + lastDigit;
temp /= 10;
}
System.out.println("Reversed number: " + reversed);
if (reversed == inputNumber) {
System.out.println("Number is a palindrome.");
} else {
System.out.println("Number is not a palindrome.");
}
}
}
Вывод
Reversed number: 171 Number is a palindrome.
Проверка с for-циклом
Та же логика может быть выражена через for цикл, что может быть предпочтительнее в контекстах, где счетчик цикла естественнее выражать как декрементирующий индекс.
package com.guru99;
public class PalindromeNum {
public static void main(String[] args) {
int inputNumber = 185; // число для проверки
int reversed = 0;
int temp = inputNumber;
for (; temp > 0; temp /= 10) {
int lastDigit = temp % 10;
reversed = (reversed * 10) + lastDigit;
}
System.out.println("Reversed number: " + reversed);
if (reversed == inputNumber) {
System.out.println("Number is a palindrome.");
} else {
System.out.println("Number is not a palindrome.");
}
}
}
Вывод
Reversed number: 581 Number is not a palindrome.
Рассмотрения и лучшие практики
- Отрицательные числа: По определению, отрицательные числа не считаются палиндромами из-за ведущего минуса. Возвращайте
falseнемедленно, если ввод отрицательный. - Переполнение: Реверс 32-битного целого может переполнить. Для продакшн-кода используйте
longили проверяйте переполнение перед каждым умножением. - Строковый подход: Конвертация числа в строку и сравнение с ее реверсом часто проще и менее ошибочно, особенно для очень больших чисел.
Для более детальных объяснений см. GeeksforGeeks и Stack Overflow discussion on reversing numbers.
java
- Циклы while и do-while в C#: синтаксис, примеры и лучшие практики
- Цикл for в C#: синтаксис, поток выполнения и практические примеры
- Java Hello World: ваша первая программа
- Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
- Java-программа для определения, является ли число простым
- Java-программа для вывода простых чисел от 1 до 100 — пошаговое руководство
- Генерация последовательности Фибоначчи в Java: примеры for, while и рекурсии
- Java-программа для идентификации чисел Армстронга с использованием for-цикла
- Java-проверка чисел-палиндромов: алгоритмы с while и for циклами
- Освоение циклов Python: for, while, break, continue и enumerate