C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

文字列がC++の回文であるかどうかをチェックする再帰関数


入力として文字列Strが与えられます。目標は、入力文字列が回文単語であるか、再帰関数を使用していないかを確認することです。回文文字列は、フロントまたはエンドから読み取ったときに同じ単語を形成する文字列です。長さ0の文字列は、回文と見なされます。回文の文字ごとの形式を逆にして、元の文字列と同じ文字列にします。

回文の例は次のとおりです。-マダム、abcba、マラヤーラム語など

入力 − str =“マラヤーラム語”

出力 −入力文字列は回文です。

説明

Str[0から8]=マラヤーラム語

逆Str[8から0]=マラヤーラム語

両方の文字列は同じです。

入力 −str=「チュートリアル」

出力 −入力文字列は回文ではありません。

説明

Str [0〜7]=チュートリアル

逆Str[7から0]=lairotut

両方の文字列が異なります

以下のプログラムで使用されているアプローチは次のとおりです

このアプローチでは、文字列に1文字が含まれているかどうかを確認します。真の場合は、回文です。そうでない場合は、残りの文字について文字列全体を再帰的にトラバースし、対応する文字が異なる場合は再帰を中断します。

  • 入力文字列Str[]を取得し、その長さを計算します。

  • 長さが0の場合、result=1を設定します。

  • それ以外の場合、result =checkPalindrome(Str、0、length --1)を設定します。ここで、0は最初のインデックスで、lenght-1は最後のインデックスです

  • 関数checkPalindrome(char str []、int first、int last)は、文字列内の対応する文字と一致しない文字がある場合、0を返します。

  • 最初と最後のインデックスが同じである場合、文字列は1文字で、1を返します。

  • そうでない場合は、終了文字を除く残りの文字をfirst ++、last--でチェックし、checkPalindrome(str、first、last)を再帰的に呼び出します。

  • すべての再帰が終了すると、結果が得られます。

  • 1の場合、入力文字列は回文です。

  • それ以外の入力文字列は回文ではありません。

  • 結果をメインに出力します。

#include <bits/stdc++.h>
using namespace std;
int checkPalindrome(char str[], int first, int last){
   if (first < last + 1){
      first++;
      last--;
      return checkPalindrome(str, first, last);
   }

   if (first == last){
      return 1;
   }
   if (str[first] != str[last]){
      return 0;
   }
   return 1;
}
// Driver Code
int main(){
   char Str[] = "madam";
   int result;
   int length = strlen(Str);
   if (length == 0){
      result=1;
   }

   else{
      result=checkPalindrome(Str, 0, length - 1);
   }
   if (result==1){
      cout << "Input string is palindrome.";
   }
   else{
      cout << "Input string is not a palindrome.";
   }
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Input string is palindrome.

  1. C++の純粋関数

    純粋関数は、同じ引数値に対して常に同じ結果を返します。結果を返すだけで、引数の変更、I / Oストリーム、出力の生成などの追加の副作用はありません。 いくつかの純粋関数はsin()、strlen()、sqrt()、max()、pow()、floor()などです。いくつかの純粋関数はrand()、time()などです。 純粋関数のいくつかを実証するためのいくつかのプログラムは次のとおりです- strlen() strlen()関数は、文字列の長さを見つけるために使用されます。これは、次のプログラムで示されています- 例 #include<iostream> #include&

  2. C ++のstrchr()関数

    C ++では、strchr()は事前定義された関数です。文字列の処理に使用され、指定された文字列内の特定の文字の最初の出現を返します。 strchr()の構文は次のとおりです。 char *strchr( const char *str, int c) 上記の構文で、strは文字cを含む文字列です。 strchr()関数は、str内で最初に出現するcを検出します。 strchr()関数を示すプログラムは次のとおりです。 例 #include <iostream> #include <cstring> using namespace std; int main()