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

trygubが部分文字列ではない文字列を見つけるためのC++コード


n個の小文字の英字を含む文字列Sがあるとします。 「trygub」が結果の文字列のサブシーケンスにならないように、Sの文字を並べ替える必要があります。

したがって、入力がS ="pintontrygubabc"のような場合、出力は"abbcginnoprttuy"になります。

ステップ

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

sort the array S
return S

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

#include <bits/stdc++.h>
using namespace std;
string solve(string S){
   sort(S.begin(), S.end());
   return S;
}
int main(){
   string S = "pintontrygubabc";
   cout << solve(S) << endl;
}

入力

"pintontrygubabc"

出力

"abbcginnoprttuy"

  1. C++で別の文字列の部分文字列である1つの文字列の最長部分列の長さを検索します

    2つの文字列XとYがあり、文字列Xの最長部分列の長さを見つける必要があるとします。これは、シーケンスYの部分文字列です。したがって、X =“ ABCD”およびY =“ BACDBDCD”の場合、出力は3になります。 。「ACD」はXの最長のサブシーケンスであり、Yのサブストリングです。 ここでは、動的計画法を使用してこの問題を解決します。したがって、Xの長さがnで、Yの長さがmの場合、次数(m + 1)x(n + 1)のDP配列を作成します。 DP [i、j]の値は、X [0…j]のサブシーケンスの最大長であり、Y[0…i]のサブストリングです。これで、DPの各セルについて、次のようになりま

  2. C++で復号化された文字列のk番目の文字を検索します

    エンコードされた文字列が1つあるとします。ここで、部分文字列の繰り返しは、部分文字列の後に部分文字列の数が続くものとして表されます。したがって、文字列がab2cd2のような場合は、ababcdcdを示し、k =4の場合は、k番目の文字(ここではb)を返します。 これを解決するために、最初に空の復号化された文字列を取得し、次にサブ文字列とその頻度を1つずつ読み取ることによって文字列を解凍します。次に、復号化された文字列に現在のサブ文字列をその頻度で追加します。文字列がなくなるまでこのプロセスを繰り返し、復号化された文字列からK番目の文字を出力します。 例 #include<iostrea