算法:递归函数检查字符串是否是回文

2021年3月11日16:59:43 发表评论 841 次浏览

本文概述

给定一个字符串, 编写一个递归函数, 检查给定的字符串是否为回文, 否则为回文

例子 :

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

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

推荐:请尝试使用{IDE}首先, 在继续解决方案之前。

我们已经讨论了迭代函数这里.

递归函数的思想很简单:

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

下面是上述想法的实现:

C ++

// A recursive C++ program to 
// check whether a given number
// is palindrome or not
#include <bits/stdc++.h>
using namespace std;
  
// A recursive function that
// check a str展开 is
// palindrome or not.
bool isPalRec( char str[], int s, int e)
{
      
     // If there is only one character
     if (s == e)
     return true ;
  
     // If first and last
     // characters do not match
     if (str展开 != str[e])
     return false ;
  
     // If there are more than 
     // two characters, check if 
     // middle substring is also 
     // palindrome or not.
     if (s < e + 1)
     return isPalRec(str, s + 1, e - 1);
  
     return true ;
}
  
bool isPalindrome( char str[])
{
     int n = strlen (str);
      
     // An empty string is 
     // considered as palindrome
     if (n == 0)
         return true ;
      
     return isPalRec(str, 0, n - 1);
}
  
// Driver Code
int main()
{
     char str[] = "geeg" ;
  
     if (isPalindrome(str))
     cout << "Yes" ;
     else
     cout << "No" ;
  
     return 0;
}
  
// This code is contributed by shivanisinghss2110

C

// A recursive C program to 
// check whether a given number
// is palindrome or not
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
  
// A recursive function that
// check a str展开 is
// palindrome or not.
bool isPalRec( char str[], int s, int e)
{
     // If there is only one character
     if (s == e)
     return true ;
  
     // If first and last
     // characters do not match
     if (str展开 != str[e])
     return false ;
  
     // If there are more than 
     // two characters, check if 
     // middle substring is also 
     // palindrome or not.
     if (s < e + 1)
     return isPalRec(str, s + 1, e - 1);
  
     return true ;
}
  
bool isPalindrome( char str[])
{
int n = strlen (str);
  
// An empty string is 
// considered as palindrome
if (n == 0)
     return true ;
  
return isPalRec(str, 0, n - 1);
}
  
// Driver Code
int main()
{
     char str[] = "geeg" ;
  
     if (isPalindrome(str))
     printf ( "Yes" );
     else
     printf ( "No" );
  
     return 0;
}

Java

// A recursive JAVA program to 
// check whether a given String 
// is palindrome or not
import java.io.*;
  
class GFG
{
     // A recursive function that 
     // check a str(s..e) is 
     // palindrome or not.
     static boolean isPalRec(String str, int s, int e)
     {
         // If there is only one character
         if (s == e)
             return true ;
  
         // If first and last 
         // characters do not match
         if ((str.charAt(s)) != (str.charAt(e)))
             return false ;
  
         // If there are more than 
         // two characters, check if
         // middle substring is also
         // palindrome or not.
         if (s < e + 1 )
             return isPalRec(str, s + 1 , e - 1 );
  
         return true ;
     }
  
     static boolean isPalindrome(String str)
     {
         int n = str.length();
  
     // An empty string is 
     // considered as palindrome
         if (n == 0 )
             return true ;
  
         return isPalRec(str, 0 , n - 1 );
     }
  
     // Driver Code
     public static void main(String args[])
     {
         String str = "geeg" ;
  
         if (isPalindrome(str))
             System.out.println( "Yes" );
         else
             System.out.println( "No" );
     }
}
  
// This code is contributed
// by Nikita Tiwari

python

# A recursive Python program 
# to check whether a given 
# number is palindrome or not
  
# A recursive function that 
# check a str展开 is 
# palindrome or not.
def isPalRec(st, s, e) :
      
     # If there is only one character
     if (s = = e):
         return True
  
     # If first and last
     # characters do not match
     if (st展开 ! = st[e]) :
         return False
  
     # If there are more than 
     # two characters, check if 
     # middle substring is also 
     # palindrome or not.
     if (s < e + 1 ) :
         return isPalRec(st, s + 1 , e - 1 );
  
     return True
  
def isPalindrome(st) :
     n = len (st)
      
     # An empty string is 
     # considered as palindrome
     if (n = = 0 ) :
         return True
      
     return isPalRec(st, 0 , n - 1 );
  
  
# Driver Code
st = "geeg"
if (isPalindrome(st)) :
     print "Yes"
else :
     print "No"
      
# This code is contributed
# by Nikita Tiwari.

C#

// A recursive C# program to 
// check whether a given number
// is palindrome or not
using System;
  
class GFG
{
  
     // A recursive function that 
     // check a str(s..e)
     // is palindrome or not.
     static bool isPalRec(String str, int s, int e)
     {
          
         // If there is only one character
         if (s == e)
             return true ;
  
         // If first and last character
         // do not match
         if ((str展开) != (str[e]))
             return false ;
  
         // If there are more than two
         // characters, check if middle
         // substring is also
         // palindrome or not.
         if (s < e + 1)
             return isPalRec(str, s + 1, e - 1);
              return true ;
     }
  
     static bool isPalindrome(String str)
     {
         int n = str.Length;
  
         // An empty string is considered 
         // as palindrome
         if (n == 0)
             return true ;
  
         return isPalRec(str, 0, n - 1);
     }
  
     // Driver Code
     public static void Main()
     {
         String str = "geeg" ;
  
         if (isPalindrome(str))
             Console.Write( "Yes" );
         else
             Console.Write( "No" );
     }
}
  
// This code is contributed by Nitin Mittal.

的PHP

<?php
// A recursive php program to 
// check whether a given number
// is palindrome or not
  
  
// A recursive function that 
// check a str展开 is 
// palindrome or not.
function isPalRec( $str , $s , $e )
{
     // If there is only one character
     if ( $s == $e )
     return true;
  
     // If first and last 
     // characters do not match
     if ( $str [ $s ] != $str [ $e ])
     return false;
  
     // If there are more than two 
     // characters, check if middle 
     // substring is also palindrome or not.
     if ( $s < $e + 1)
     return isPalRec( $str , $s + 1, $e - 1);
  
     return true;
}
  
function isPalindrome( $str )
{
$n = strlen ( $str );
  
// An empty string is 
// considered as palindrome
if ( $n == 0)
     return true;
  
return isPalRec( $str , 0, $n - 1);
}
  
// Driver Code
{
     $str = "geeg" ;
  
     if (isPalindrome( $str ))
     echo ( "Yes" );
     else
     echo ( "No" );
  
     return 0;
}
  
// This code is contributed 
// by nitin mittal.
?>

输出:

Yes

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: