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

1つの最小部分文字列で2つの部分文字列を検索するC++コード


n文字の小文字の文字列Sがあるとします。 -

のように、2つの空でないサブストリングPとQを見つける必要があります。
  • PとQはどちらもSのサブシーケンスです

  • 各インデックスiについて、S[i]はPとQのいずれかに正確に属します。

  • Pは辞書式順序で可能な限り最小です。

したがって、入力がS ="thelightsaber"の場合、出力は10になります。これは、2つの赤いノートブック、3つの緑のノートブック、および5つの青いノートブックが必要だからです。

ステップ

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

c := S
sort the array c
a := position of (c[0]) in S
delete c from S
print c[0] and S

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

#include <bits/stdc++.h>
using namespace std;
void solve(string S){
   string c = S;
   sort(c.begin(), c.end());
   int a = S.find(c[0]);
   S.erase(S.begin() + a);
   cout << c[0] << ", " << S << endl;
}
int main(){
   string S = "thelightsaber";
   solve(S);
}

入力

"thelightsaber"

出力

a, thelightsber

  1. 配列にC++で1つの不一致がある文字列が含まれているかどうかを確認します

    文字列sと、文字列Aの別の配列があるとします。配列に、現在の長さの異なる文字列と1文字の違いがある文字列が含まれているかどうかを確認する必要があります。文字列が「banana」のようで、配列が[「bana」、「orange」、「banaba」、「banapy」]のようになっているとすると、文字列banabaが1つあるため、結果はtrueになります。ここでは1文字だけです。バナナとは異なります。 この問題を解決するために、いくつかの手順に従います- 指定された文字列をトラバースし、配列内のすべての文字列を確認してから、arr-内のすべての文字列に対して次の手順に従います。 arrの

  2. 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の各セルについて、次のようになりま