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

C ++で特定のサブ文字列を再帰的に削除して、文字列が空になる可能性があるかどうかを確認します


str1とstr2の2つの文字列が与えられたとします。 str2はstr1のサブストリングであり、str1からstr2を削除できます。文字列str2がstr1に複数回出現する可能性があります。ここでの目標は、str1からstr2を複数回削除し続けると、str1がヌル文字列になるかどうかを確認することです。可能であれば1を返し、そうでない場合は0を返します。

したがって、入力がstr1 ="CCCPPPPPP"のようである場合、str2 ="CPP";そうすれば、出力は真になります。

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

  • str1のサイズが0より大きい場合は、-
      を実行します。
    • index:=str1のstr2の文字列開始位置を返します
    • インデックスが-1と同じ場合、-
      • ループから抜け出す
    • str1からstr2を削除
  • str1のサイズが0に類似している場合は1を返し、そうでない場合は0を返します。

例(C ++)

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

#include<bits/stdc++.h>
using namespace std;
bool solve(string str1, string str2) {
   while (str1.size() > 0) {
      int index = str1.find(str2);
      if (index == -1)
      break;
      str1.erase(index, str2.size());
   }
   return (str1.size() == 0);
}
int main() {
   string str1 = "CCCPPPPPP", str2 = "CPP";
   cout<<solve(str1, str2)<<endl;
   return 0;
}

入力

"CCCPPPPPP", "CPP"

出力

1

  1. Pythonで特定のサブ文字列を再帰的に削除して、文字列が空になる可能性があるかどうかを確認します

    2つの文字列sとtがあるとします。 sからtを何度でも削除できます。そして、tは一度に1回だけ表示されます。必要な回数だけtを削除して、sが空になるかどうかを確認する必要があります。 したがって、入力がs =pipipinnn t =pinの場合、「pipipinnn」から「pin」を削除できるため、出力はTrueになります。次に、「pipinn」を取得し、「pin」を削除します。文字列「pin」を取得し、それを削除して空にします。 これを解決するには、次の手順に従います- 0の場合、実行 位置:=sのtの開始インデックス 位置がsにない場合は、 ループから抜け出す s:=sからt

  2. 再帰的削除によってaが空になる可能性があるかどうかを確認するためのPythonでの文字列スライス

    このチュートリアルでは、sliceを使用してcharを再帰的に削除することにより、指定された文字列が空になるかどうかをチェックするプログラムを作成します。それをより明確に理解するための例を見てみましょう。 入力 string = "tutorialstutorialspointpoint" sub_string = "tutorialspoint" 出力 True 最初の反復後tutorialstutorialspointpoint チュートリアルポイントになります 。 2回目の反復の後、文字列は空になります。 find()を使用して結果を得る