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

文字列がC++でanbnパターンに従っているかどうかを確認します


aとbの2文字だけで構成される文字列が与えられたとします。文字列がanbnの形式であるかどうか、つまり、n個のaとそれに続くn個のbが含まれているかどうかを確認する必要があります。 trueの場合、1を返し、それ以外の場合は0を返します。

したがって、入力が「aaaaaaaaaaaabbbbbbbbbbbb」のような場合、出力はtrueになります。

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

  • length:=input_stringの長さ
  • iを初期化する場合:=0、i <長さの場合、更新(iを1増やします)、&minus
      を実行します
    • input_string[i]が'a'と等しくない場合、-
      • ループから抜け出す
  • i * 2が長さに等しくない場合、-
    • falseを返す
  • jを初期化する場合:=i、j <長さの場合、更新(jを1つ増やす)、実行-
    • input_string[j]が'b'と等しくない場合、-
      • falseを返す
  • trueを返す

例(C ++)

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

#include <bits/stdc++.h>
using namespace std;
bool solve(string input_string) {
   int length = input_string.length();
   int i;
   for (i = 0; i < length; i++)
      if (input_string[i] != 'a')
         break;
      if (i * 2 != length)
         return false;
      for (int j = i; j < length; j++)
         if (input_string[j] != 'b')
            return false;
   return true;
}
int main() {
   string input_string = "aaaaaaaaaaaabbbbbbbbbbbb";
   cout << solve(input_string)<< endl;
   return 0;
}

入力

"aaaaaaaaaaaabbbbbbbbbbbb"

出力

1

  1. 与えられた文字列が悪いかどうかをチェックするC++プログラム

    n文字の文字列Sがあるとします。 Sには、小文字の英字と)文字が含まれます。最後の文字数)が残りの文字数よりも厳密に多い場合、文字列は正しくありません。 Sが悪いかどうかを確認する必要があります。 したがって、入力がS =fega))))))のような場合、4文字と6)があるのでこれは悪いので、出力はTrueになります。 ステップ これを解決するには、次の手順に従います- ans := 0 n := size of S i := n - 1 while (i >= 0 and S[i] is same as ')'), do:    (decreas

  2. ツリーがC++で同形であるかどうかを確認します

    二分木では、各ノードに2つの子、つまり左の子と右の子が含まれます。 2つの二分木があり、タスクは、ツリーの1つが、別のツリーを左にひっくり返すことによって取得できるかどうかを確認することであると仮定します。 左側にある他のツリーを反転して取得できる場合、ツリーは同型です。 例 入力-1 出力: 同形 説明: 与えられたTree-2は、左側のTree-1を反転することで取得できるため、Treeは同型です。 この問題を解決するためのアプローチ この特定の問題を解決するための再帰的なアプローチは、ブール関数が両方のツリーのルートノードをチェックすることです。両方のツリーの