Java >> Java tutorial >  >> Tag >> String

String Palindrome i Java

String Palindrome i Java | Et palindrom er et ord eller en streng, når du læser det fra venstre mod højre eller højre mod venstre, vil ordet stave det samme. I Java kan vi også finde sådanne tal. Palindromnummeret er også baseret på palindromstrengen. Det modsatte af et tal er lig med det samme tal kaldes et palindromtal. Eksempel:- 5225, 12321 og e.t.c.

Palindromstrengeksempel

Inden vi går til kodningen, lad os se nogle eksempler på palindromstreng:radar, niveau, frue, civic, rotor, referer og etc. Bemærk disse ord, de er de samme, når de staves bagfra også. R a d a r -> r a d a R

String Palindrome i Java ved hjælp af reverse() metode

I Java indeholder klasserne StringBuilder og StringBuffer foruddefineret metode reverse() for at vende strengtypeværdierne.

Syntaksen for reverse()-metoden i StringBuilder-klassen:- public StringBuilder reverse()

String Palindrome i Java ved hjælp af omvendt metode

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();
   }
}

Output:-

Indtast en streng:fru
Palindrome

Indtast en streng:KnowProgram
Ikke Palindrome

Vi har defineret en klasse Palindrome og oprettet et Scanner-objekt for at få input fra brugeren. Inputtet tages som en streng og konverteres som et StringBuilder-objekt, så vi kan kalde reverse()-metoden. Efter at have vendt det, konverter StringBuilder-objektet tilbage til String-objektet. Nu vil vi sammenligne de originale og resulterende strenge. Hvis den omvendte streng er den samme som den originale streng, så udskriv "Palindrome" eller udskriv "Not Palindrome".

Bemærk:- Her kalder vi equals()-metoden, som sammenligner strenge baseret på indhold, der skelner mellem store og små bogstaver. For eksempel:- "Fru" er ikke en palindrom-stilfælde-følsom, men det er en palindrom-streng, der ikke skiller mellem store og små bogstaver. Hvis vi vil sammenligne strenge uden at bekymre os om sagen, kan vi kalde equalsIgnoreCase()-metoden.

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

Output:-

Indtast en streng:Madam
Ikke Palindrome

String Palindrome i Java ved hjælp af Array

I det forrige program har vi brugt metoden reverse() til at konvertere en given streng til dens omvendte format. Lad os nu gøre det samme ved at vende strengen manuelt. I den omvendte streng i Java har vi diskuteret forskellige måder at vende en streng på i Java-programmering.

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();
   }
}

Output:-

Indtast en streng:madam
Original Array:[m, a, d, a, m]
Omvendt Array:[m, a, d, a, m]
Palindrome

Indtast en streng:KnowProgram
Original Array:[K, n, o, w, P, r, o, g, r, a, m]
Omvendt array:[m, a, r, g , o, r, P, w, o, n, K]
Ikke et palindrom

Vi har importeret arrays til at udføre array-operationer og en scanner til at læse input fra brugeren. I hovedklassen bad vi brugeren om at indtaste en streng og læse den ved hjælp af scannerklassen. Vi har konverteret denne streng til rækken af ​​tegn ved at bruge toCharArray() metoden. Vi finder længden af ​​et array og gemmer det i variablen "størrelse". Vi har brugt metoden Arrays.copyOf() til at gemme en kopi af arrayet.

Nu vil vi vende den oprindelige række af strenge. Til dette har vi itereret arrayet med for loop og byttet tegnene. Senere udskriver vi det originale array og vender arrayet om ved hjælp af Arrays.toString() metoder. Derefter sammenligner vi den originale streng og den omvendte streng ved hjælp af Arrays.equals() metoden. Vi finder, om det omvendte array er lig med et originalt array eller ej. Hvis de er ens, så udskriv "Palindrome" eller udskriv "Not a Palindrome".

Længste palindrom i en streng Java

Nedenstående program forsøger at finde den længste palindrom-understreng i en given streng. Hvis den er til stede, returneres en bestemt understreng. Vi har defineret to metoder longestPalindrome() og checkForEquality() metoden.

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);
   }
}

Output:-

Indtast en streng:bananer
Længste palindromstreng:anana

Indtast en streng:abaradar121
Længste palindromstreng:radar

I den givne streng "abaradar121" er der tre palindromstrenge "aba", "radar" og "121". Blandt dem er "radar" den længste palindromstreng. Derfor er outputtet "radar".


Java tag