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

ポインタを使用して、文字列がCの回文であるかどうかを確認します


文字列sがあるとします。指定された文字列が回文であるかどうかを確認する必要があります。 Cのポインタを使用してこの問題を解決する必要があります。

したがって、入力がs ="racecar"のような場合、出力はTrueになります。

これを解決するには、次の手順に従います-

  • 長さ:=文字列のサイズ
  • forward:=文字列の最初の文字を指します
  • reverse:=文字列の最後の文字を指します
  • 後進の位置>=前進の位置で、
    • 逆方向が指す文字が順方向が指す文字と同じである場合、
      • 順方向に増加し、逆方向に1減少します
    • それ以外の場合
      • ループから抜け出す
  • 順方向の位置>=逆方向の位置の場合、
    • Trueを返す
  • Falseを返す

理解を深めるために、次の実装を見てみましょう-

#include <stdio.h>
#include <string.h>
int solve(char *string){
   int length;
   char *forward, *reverse;
   length = strlen(string);
   forward = string;
   reverse = forward + length - 1;
   for (forward = string; reverse >= forward;) {
      if (*reverse == *forward) {
         reverse--;
         forward++;
      } else
         break;
   } if (forward > reverse)
      return 1;
   else
      return 0;
}
int main(){
   char string[] = "racecar";
   printf("%d", solve(string));
}

入力

"racecar"

出力

1

  1. Cアレイが回文であるか、再帰を使用していないかを確認するプログラム

    配列arr[n]が与えられ、nは配列のあるサイズである場合、タスクは、配列が回文であるか、再帰を使用していないことを確認することです。回文は、MADAM、NAMANなどのように、同じように前後に読み取ることができるシーケンスです。 したがって、配列が回文であるかどうかを確認するために、-のように配列を前後にトラバースできます。 再帰では、開始値と終了値を等しくなるまで変更する必要があります。または、開始値と終了値が等しくない場合は、終了して、指定された配列が回文ではないことをfalseに返します。 例 Input: arr[] = { 2, 3, 4, 3, 2} Output: Y

  2. アレイが回文であるかどうか、またはC++でSTLを使用していないかどうかを確認するプログラム

    n個の整数の配列arr[n]が与えられた場合、タスクは配列が回文であるかどうかを見つけることです。 C++でSTLを使用して指定されたタスクを実行する必要があります。 C ++には、STL(標準テンプレートライブラリ)の機能があります。これは、データ構造と、スタック、キュー、リストなどのいくつかの機能を提供するために使用されるC ++テンプレートクラスのセットです。これらを使用するには、知識が必要です。テンプレートクラスの。 回文は、シーケンスの前または後ろから同じように読み取られるシーケンスです。回文の簡単な例としては、-MADAM、RACECARなどがあります。配列は、以下の例のような