Палиндром в Java — проверка числа и строки с примерами

Палиндром — это слово, число или фраза, которые читаются одинаково слева направо и справа налево. Например, "Radar" или число 3553.

Пример 1: проверка строки на палиндром

Чтобы проверить строку, переворачиваем её и сравниваем с исходной (без учёта регистра).

class Main {
  public static void main(String[] args) {

    String str = "Radar", reverseStr = "";

    int strLength = str.length();

    for (int i = (strLength - 1); i >=0; --i) {
      reverseStr = reverseStr + str.charAt(i);
    }

    if (str.toLowerCase().equals(reverseStr.toLowerCase())) {
      System.out.println(str + " is a Palindrome String.");
    }
    else {
      System.out.println(str + " is not a Palindrome String.");
    }
  }
}

Вывод:

Radar is a Palindrome String.

В программе строка "Radar" сохранена в str. Алгоритм состоит из двух частей:

1. Цикл for для разворота строки

  • Цикл идёт с конца строки к началу.

  • Метод charAt() достаёт каждый символ строки по индексу.

  • Каждый символ добавляется в reverseStr в обратном порядке.

2. Сравнение str и reverseStr с помощью if

  • Метод toLowerCase() приводит обе строки к нижнему регистру. Это важно, потому что Java различает регистр: 'r' и 'R' — разные символы.

  • Метод equals() проверяет, равны ли строки.

Пример 2: проверка числа на палиндром

Для числа разворачиваем его так же, как в задаче про переворот числа, и сравниваем с исходным.

class Main {
  public static void main(String[] args) {

    int num = 3553, reversedNum = 0, remainder;

    // store the number to originalNum
    int originalNum = num;

    // get the reverse of originalNum
    // store it in variable
    while (num != 0) {
      remainder = num % 10;
      reversedNum = reversedNum * 10 + remainder;
      num /= 10;
    }

    // check if reversedNum and originalNum are equal
    if (originalNum == reversedNum) {
      System.out.println(originalNum + " is Palindrome.");
    }
    else {
      System.out.println(originalNum + " is not Palindrome.");
    }
  }
}

Вывод:

3553 is Palindrome.

В этой программе число 3553 сохранено в num и в originalNum. Используются:

  • цикл while для разворота num и сохранения результата в reversedNum;

  • if/else для сравнения reversedNum с исходным originalNum.