Рубрики

Рекурсивная функция для проверки, является ли строка палиндромом

Для данной строки напишите рекурсивную функцию, которая проверяет, является ли данная строка палиндромом, иначе — не палиндромом.

Примеры :

Input : malayalam
Output : Yes
Reverse of malayalam is also
malayalam.

Input : max
Output : No
Reverse of max is not max.

Мы обсудили итеративную функцию здесь .

Идея рекурсивной функции проста:

1) If there is only one character in string
   return true.
2) Else compare first and last characters
   and recur for remaining substring.

Ниже приведена реализация вышеуказанной идеи:

С

// Рекурсивная C-программа для
// проверяем, соответствует ли данное число
// палиндром или нет
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

  
// Рекурсивная функция, которая
// проверка str [s..e]
// палиндром или нет.

bool isPalRec(char str[], 

              int s, int e)

{

    // Если есть только один символ

    if (s == e)

    return true;

  

    // Если первый и последний

    // символы не совпадают

    if (str[s] != str[e])

    return false;

  

    // Если их больше

    // два символа, проверьте, если

    // средняя подстрока также

    // палиндром или нет.

    if (s < e + 1)

    return isPalRec(str, s + 1, e - 1);

  

    return true;

}

  

bool isPalindrome(char str[])

{

int n = strlen(str);

  
// Пустая строка
// рассматривается как палиндром

if (n == 0)

    return true;

  

return isPalRec(str, 0, n - 1);

}

  
// Код драйвера

int main()

{

    char str[] = "geeg";

  

    if (isPalindrome(str))

    printf("Yes");

    else

    printf("No");

  

    return 0;

}

Джава

// Рекурсивная JAVA-программа для
// проверяем, является ли данная строка
// палиндром или нет

import java.io.*;

  

class GFG

{

    // Рекурсивная функция, которая

    // проверка str (s..e)

    // палиндром или нет.

    static boolean isPalRec(String str, 

                            int s, int e)

    {

        // Если есть только один символ

        if (s == e)

            return true;

  

        // Если первый и последний

        // символы не совпадают

        if ((str.charAt(s)) != (str.charAt(e)))

            return false;

  

        // Если их больше

        // два символа, проверьте, если

        // средняя подстрока также

        // палиндром или нет.

        if (s < e + 1)

            return isPalRec(str, s + 1, e - 1);

  

        return true;

    }

  

    static boolean isPalindrome(String str)

    {

        int n = str.length();

  

    // Пустая строка

    // рассматривается как палиндром

        if (n == 0)

            return true;

  

        return isPalRec(str, 0, n - 1);

    }

  

    // Код драйвера

    public static void main(String args[])

    {

        String str = "geeg";

  

        if (isPalindrome(str))

            System.out.println("Yes");

        else

            System.out.println("No");

    }

}

  
// Этот код добавлен
// Никита Тивари

питон

# Рекурсивная программа Python
# проверить, является ли данный
# номер палиндром или нет

  
# Рекурсивная функция, которая
# проверить строку [s..e] есть
# палиндром или нет.

def isPalRec(st, s, e) :

      

    # Если есть только один символ

    if (s == e):

        return True

  

    # Если первый и последний

    # символы не совпадают

    if (st[s] != st[e]) :

        return False

  

    # Если их больше

    # два символа, проверьте, если

    # средняя подстрока также

    # палиндром или нет.

    if (s < e + 1) :

        return isPalRec(st, s + 1, e - 1);

  

    return True

  

def isPalindrome(st) :

    n = len(st)

      

    # Пустая строка

    # считается палиндромом

    if (n == 0) :

        return True

      

    return isPalRec(st, 0, n - 1);

  

  
Код водителя

st = "geeg"

if (isPalindrome(st)) :

    print "Yes"

else :

    print "No"

      
# Этот код добавлен
# Никита Тивари.

C #

// Рекурсивная программа на C # для
// проверяем, соответствует ли данное число
// палиндром или нет

using System;

  

class GFG

{

  

    // Рекурсивная функция, которая

    // проверяем str (s..e)

    // палиндром или нет.

    static bool isPalRec(String str, 

                         int s, 

                         int e)

    {

          

        // Если есть только один символ

        if (s == e)

            return true;

  

        // Если первый и последний символ

        // не совпадает

        if ((str[s]) != (str[e]))

            return false;

  

        // Если их больше двух

        // символы, проверяем среднее

        // подстрока тоже

        // палиндром или нет.

        if (s < e + 1)

            return isPalRec(str, s + 1, 

                            e - 1);

             return true;

    }

  

    static bool isPalindrome(String str)

    {

        int n = str.Length;

  

        // Пустая строка считается

        // как палиндром

        if (n == 0)

            return true;

  

        return isPalRec(str, 0, n - 1);

    }

  

    // Код драйвера

    public static void Main()

    {

        String str = "geeg";

  

        if (isPalindrome(str))

            Console.Write("Yes");

        else

            Console.Write("No");

    }

}

  
// Этот код предоставлен Нитином Митталом.

PHP

<?php
// Рекурсивная PHP-программа для
// проверяем, соответствует ли данное число
// палиндром или нет

  

  
// Рекурсивная функция, которая
// проверка str [s..e]
// палиндром или нет.

function isPalRec($str, $s,$e)

{

    // Если есть только один символ

    if ($s == $e)

    return true;

  

    // Если первый и последний

    // символы не совпадают

    if ($str[$s] != $str[$e])

    return false;

  

    // Если их больше двух

    // символы, проверяем среднее

    // подстрока тоже палиндром или нет.

    if ($s < $e + 1)

    return isPalRec($str, $s + 1, $e - 1);

  

    return true;

}

  

function isPalindrome($str)

{

$n = strlen($str);

  
// Пустая строка
// рассматривается как палиндром

if ($n == 0)

    return true;

  

return isPalRec($str, 0, $n - 1);

}

  
// Код драйвера
{

    $str = "geeg";

  

    if (isPalindrome($str))

    echo("Yes");

    else

    echo("No");

  

    return 0;

}

  
// Этот код добавлен
// нитин митталь.
?>


Выход :

Yes

Эта статья предоставлена Сахилом Раджпутом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Рекурсивная функция для проверки, является ли строка палиндромом

0.00 (0%) 0 votes