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

特定の文字列がC++の回文の回転であるかどうかを確認します


ここでは、特定の回転後の1つのストリングが回文であることがわかります。回文は、両方向で同じ文字列です。それがAAAADのようなものである場合、弦の回転は回文です。これは直接の回文ではありませんが、そのローテーションAADAAは回文です。

文字列が回文で回転しているかどうかを確認するには、最初にこれが回文であるかどうかを確認し、その後、1文字ずつ回転させてから、もう一度確認します。この確認はn回実行されます。ここでnは文字数です。

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool isPalindromeRange(string str, int left, int right){
   return (left >= right) || (str[left] == str[right] && isPalindromeRange(str, left + 1, right - 1));
}
bool isRotatedPalindrome(string str){
   int len = str.length();
   for (int i = 0; i < len; i++){
      rotate(str.begin(), str.begin() + 1, str.end());
      if (isPalindromeRange(str, 0, len - 1)) //if rotated string is palindrome, then return true
         return true;
   }
   return false;
}
int main(){
   string str = "AAAAD"; //AADAA is palindrome
   //rotate(str.begin(), str.begin() + 2, str.end());
   if (isRotatedPalindrome(str))
      cout << "Its rotation is palindrome";
   else
      cout << "Its rotation is not palindrome";
}

出力

Its rotation is palindrome

  1. 指定された文字列が母音回文であるかどうかを確認するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −文字列(母音と子音の両方の文字を含む)が与えられ、すべての子音を削除してから、結果の文字列が回文であるかどうかを確認します。 ここでは、最初に文字列に存在するすべての子音を削除します。各値を1から計算された最小値まで除算することによって計算されて除数を計算するループ 条件が真であると評価されるたびに、カウンターは1ずつ増加します。 文字列内のすべての子音を削除します。ここで、母音の文字列が回文であるかどうか、つまり、指定された文字列とその反転が同一であるかどうかを確認します。それがpalindromep

  2. 指定された文字列が回文数であるかどうかを確認するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列入力が与えられた場合、それが回文であるかどうかを確認するためにPython関数を作成する必要があります。 文字列の逆が文字列と同一である場合、文字列は回文と呼ばれます。 これは2つの方法で実行できます- スライスによる反転 負の索引付けによる比較 ここでは、スライスの助けを借りて文字列の反転を学習します。 スライスの方法で文字列を反転するには、次のステートメントを指定します- Str[ : : -1 ] 開始パラメータと終了パラメータが割り当てられておらず、ステップ値