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

Java-program til at kontrollere Palindrome streng ved hjælp af rekursion

I denne tutorial lærer vi, hvordan man kontrollerer, om en streng er et palindrom eller ikke ved hjælp af en rekursiv funktion. En rekursiv funktion er en funktion, der kalder sig selv. Men før du går videre, hvis du ikke er bekendt med begrebet streng, så tjek artiklen om Strings i Java.

Input: Indtast strengen:Mor

Output: Den indtastede streng er et palindrom.

Lad os se på programmet for at kontrollere, om strengen er et palindrom eller ej.

Program 1:Tjek palindromstreng ved hjælp af rekursion

I dette program lærer vi at kontrollere, om en streng er et palindrom eller ikke ved hjælp af rekursion. Her vil vi bede brugeren om at indtaste strengen. Derefter kalder vi en separat rekursiv funktion for at kontrollere, om strengen er et palindrom eller ikke kun, hvis den indtastede streng ikke er tom. Hvis strengen er tom, vil den udskrive, at det er et palindrom.

Algorithme

  1. Start
  2. Deklarer en strengvariabel.
  3. Bed brugeren om at initialisere strengen.
  4. Kald en funktion for at kontrollere, om strengen er palindrom eller ej.
  5. Hvis en streng er tom, så er det et palindrom.
  6. Hvis strengen ikke er tom, skal du kalde en rekursiv funktion.
  7. Hvis der kun er én karakter, så er det et palindrom.
  8. Hvis første og sidste tegn ikke stemmer overens, er det ikke et palindrom.
  9. Hvis der er flere tegn, skal du kontrollere, om den midterste understreng også er palindrom eller ikke ved hjælp af den rekursive funktion.
  10. Udskriv resultatet.
  11. Stop.

Nedenfor er koden til det samme i Java-sproget.

/*Java Program to Check whether a String is a Palindrome or not using Recursive Function*/
import java.util.Scanner;
public class Main
{
    //Recursive function that checks 
    //whether the string is palindrome or not
    static boolean checkPalindrome(String str, int s, int e) 
    { 
        if (s == e)    // If there is only one character 
            return true;  
        // If first and last characters do not match 
        if ((str.charAt(s)) != (str.charAt(e))) 
            return false;   
        // If there are multiple characters, check if 
        // middle substring is also palindrome or not. 
        if (s < e + 1) 
            return checkPalindrome(str, s + 1, e - 1);   
        return true; 
    }   
    static boolean isPalindrome(String str) 
    { 
        int n = str.length();   
    // If string is empty,then it is palindrome 
        if (n == 0) 
            return true;   
        return checkPalindrome(str, 0, n - 1); 
    }   
    // Driver Code 
    public static void main(String args[]) 
    { 
        //Take input from the user
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the String :");
        String str = sc.nextLine();   //Input the string
        //Check whether palindrome or not
        if (isPalindrome(str)) 
            System.out.println(str+" is palindrome"); 
        else
            System.out.println(str+ " is not a palindrome"); 
    }   
}


Indtast strengen:wow
wow er palindrom

Program 2:Tjek palindromstreng ved hjælp af rekursion

I dette program lærer vi at kontrollere, om en streng er et palindrom eller ikke ved hjælp af rekursion. Her, når strengen er indtastet af brugeren, vil vi kalde en rekursiv funktion for at kontrollere, om det er et palindrom eller ej, ved at sammenligne det første og sidste tegn i understrengen.

Algorithme

  1. Start
  2. Deklarer en strengvariabel.
  3. Bed brugeren om at initialisere strengen.
  4. Kald en rekursiv funktion for at kontrollere, om strengen er palindrom eller ej.
  5. Hvis en streng er tom, eller hvis den kun består af ét tegn, er det et palindrom.
  6. Hvis der er flere tegn, er det første og sidste tegn i strengen markeret.
  7. Hvis det første og det sidste tegn i strengen er det samme, så udfør det samme for understrengen med det første og sidste tegn fjernet.
  8. Fortsæt processen, indtil betingelsen mislykkes.
  9. Vis resultatet.
  10. Stop.

Nedenfor er koden til det samme i Java-sproget.

/*Java Program to Check whether a String is a Palindrome or not using Recursive Function*/
import java.util.Scanner;
public class Main
{
    //Recursive function that checks 
    //whether the string is palindrome or not
    static boolean isPalindrome(String str) 
    { 
        //If string has 0 or 1 character
        if(str.length() == 0 || str.length() == 1)
            return true; 
        //If string has multiple characters
        //Check whether first and last characters are same or not
        if(str.charAt(0) == str.charAt(str.length()-1))
            return isPalindrome(str.substring(1, str.length()-1));
        return false;
    }   
    // Driver Code 
    public static void main(String args[]) 
    { 
        //Take input from the user
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the String :");
        String str = sc.nextLine();   //Input the string
        //Check whether palindrome or not
        if (isPalindrome(str)) 
            System.out.println(str+" is palindrome"); 
        else
            System.out.println(str+ " is not a palindrome"); 
    }     
}


Indtast strengen:hej
hej er ikke et palindrom


Java tag