Java >> Tutoriel Java >  >> Tag >> String

Palindrome à cordes en Java

Palindrome à cordes en Java | Un palindrome est un mot ou une chaîne lorsque vous le lisez de gauche à droite ou de droite à gauche, le mot s'épellera de la même manière. En Java, nous pouvons également trouver de tels nombres. Le numéro de palindrome est également basé sur la chaîne de palindrome. L'inverse d'un nombre est égal au même nombre est appelé un nombre palindrome. Exemple :- 5225, 12321, etc.

Exemple de chaîne Palindrome

Avant de passer au codage, voyons quelques exemples de chaîne de palindrome :- radar, niveau, madame, civique, rotor, référence, etc. Observez ces mots, ils sont les mêmes lorsqu'ils sont épelés à l'envers également. R a d a r -> r a d a R

Chaîne Palindrome en Java en utilisant la méthode reverse()

En Java, les classes StringBuilder et StringBuffer contiennent la méthode prédéfinie reverse() pour inverser les valeurs de type chaîne.

La syntaxe de la méthode reverse() dans la classe StringBuilder :- public StringBuilder reverse()

String Palindrome en Java en utilisant la méthode inverse

import java.util.Scanner;

public class Palindrome {
   public static void main(String args[]) {
      Scanner scan = new Scanner(System.in);
      System.out.print("Enter a string: ");
      String string = scan.nextLine();
      StringBuilder sb = new StringBuilder(string);
      sb.reverse();
      String data = sb.toString();
      if (string.equals(data)) {
         System.out.println("Palindrome");
      } else {
         System.out.println("Not Palindrome");
      }
      scan.close();
   }
}

Sortie :-

Saisissez une chaîne :madame
Palindrome

Saisissez une chaîne :KnowProgram
Not Palindrome

Nous avons défini une classe Palindrome et créé un objet Scanner pour obtenir l'entrée de l'utilisateur. L'entrée est considérée comme une chaîne et convertie en objet StringBuilder afin que nous puissions appeler la méthode reverse(). Après l'avoir inversé, reconvertissez l'objet StringBuilder en objet String. Nous allons maintenant comparer les chaînes d'origine et résultantes. Si la chaîne inversée est la même que la chaîne d'origine, écrivez "Palindrome" ou écrivez "Pas Palindrome".

Remarque :- Ici, nous appelons la méthode equals () qui compare les chaînes en fonction du contenu sensible à la casse. Par exemple :- "Madame" n'est pas un palindrome sensible à la casse, mais c'est une chaîne de caractères palindrome insensible à la casse. Si nous voulons comparer des chaînes sans nous soucier de la casse, nous pouvons appeler la méthode equalsIgnoreCase().

if (string.equalsIgnoreCase(data)) {
   System.out.println("Palindrome");
} else {
   System.out.println("Not Palindrome");
}

Sortie :-

Saisissez une chaîne :Madame
Pas Palindrome

Chaîne Palindrome en Java en utilisant Array

Dans le programme précédent, nous avons utilisé la méthode reverse() pour convertir une chaîne donnée dans son format inverse. Maintenant, faisons de même en inversant la chaîne manuellement. Dans la chaîne inversée en Java, nous avons discuté de différentes manières d'inverser une chaîne dans la programmation Java.

import java.util.Arrays;
import java.util.Scanner;

public class Main {
   public static void main(String args[]) {
      Scanner scan = new Scanner(System.in);
      System.out.print("Enter a string: ");
      String string = scan.nextLine();

      char[] reverse = string.toCharArray();
      int size = reverse.length;
      char[] original = Arrays.copyOf(reverse, size);

      for (int i = 0; i < size / 2; i++) {
         char temp = reverse[i];
         reverse[i] = reverse[size - i - 1];
         reverse[size - i - 1] = temp;
      }

      System.out.println("Original Array: " 
                         + Arrays.toString(original));
      System.out.println("Reverse Array: " 
                         + Arrays.toString(reverse));

      if (Arrays.equals(reverse, original)) {
         System.out.println("Palindrome");
      } else {
         System.out.println("Not a palindrome");
      }
      scan.close();
   }
}

Sortie :-

Saisissez une chaîne :madame
Original Array :[m, a, d, a, m]
Reverse Array :[m, a, d, a, m]
Palindrome

Saisissez une chaîne :KnowProgram
Original Array :[K, n, o, w, P, r, o, g, r, a, m]
Reverse Array :[m, a, r, g , o, r, P, w, o, n, K]
Pas un palindrome

Nous avons importé des tableaux pour effectuer des opérations sur les tableaux et un scanner pour lire l'entrée de l'utilisateur. Dans la classe Main, nous avons demandé à l'utilisateur d'entrer une chaîne et de la lire à l'aide de la classe scanner. Nous avons converti cette chaîne en tableau de caractères en utilisant la méthode toCharArray(). Nous trouvons la longueur d'un tableau et la stockons dans la variable "taille". Nous avons utilisé la méthode Arrays.copyOf() pour stocker une copie du tableau.

Maintenant, nous voulons inverser le tableau de chaînes d'origine. Pour cela, nous avons itéré le tableau en utilisant la boucle for et échangé les caractères. Plus tard, nous imprimons le tableau d'origine et inversons le tableau par les méthodes Arrays.toString(). Après cela, nous comparons la chaîne d'origine et la chaîne inversée à l'aide de la méthode Arrays.equals(). Nous trouvons si le tableau inverse est égal à un tableau original ou non. S'ils sont égaux, écrivez "Palindrome" ou écrivez "Pas un Palindrome".

Le palindrome le plus long d'une chaîne Java

Le programme ci-dessous essaie de trouver la plus longue sous-chaîne de palindrome dans une chaîne donnée. S'il est présent, renvoie une sous-chaîne particulière. Nous avons défini deux méthodes longestPalindrome() et checkForEquality().

import java.util.Scanner;

public class Main {
   public static void main(String[] args) {
      Scanner scan = new Scanner(System.in);
      System.out.print("Enter a string: ");
      String string = scan.nextLine();
      System.out.println("Longest Palindrome string: " 
                         + longestPalindrome(string));
      scan.close();
   }

   public static String longestPalindrome(String string) {
      if (string.isEmpty()) {
         System.out.println("Please enter a valid String.");
         return null;
      }
      if (string.length() == 1) {
         return string;
      }

      String longest = string.substring(0, 1);
      for (int i = 0; i < string.length(); i++) {
         String temp = checkForEquality(string, i, i);
         if (temp.length() > longest.length()) {
            longest = temp;
         }
         temp = checkForEquality(string, i, i + 1);
         if (temp.length() > longest.length()) {
            longest = temp;
         }
      }
      return longest;
   }

   public static String checkForEquality(String s1, int begin, int end) {
      while (begin >= 0 && end <= s1.length() - 1 
            && s1.charAt(begin) == s1.charAt(end)) {
         begin--;
         end++;
      }
      return s1.substring(begin + 1, end);
   }
}

Sortie :-

Saisissez une chaîne :bananes
Chaîne palindrome la plus longue :anana

Entrez une chaîne :abaradar121
Chaîne palindrome la plus longue :radar

Dans la chaîne donnée « abaradar121 », il y a trois chaînes palindromes « aba », « radar » et « 121 ». Parmi eux, "radar" est la plus longue chaîne de palindrome. Par conséquent, la sortie est "radar".


Balise Java