n 個の文字を含む小文字の文字列 S があるとします。空ではない 2 つを見つける必要があります −
P と Q がどちらも S
の部分列であるような部分文字列 P と Q。各インデックス i に対して、S[i ] は以下に属します。 PとQのうちの唯一のもの。
P は辞書編集上可能な限り小さいものです。
つまり、入力が S = "thelightsaber" の場合、赤いものが 2 つ必要なので、出力は 10 になります。
ノート、緑のノート 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
以上が最小の部分文字列を持つ 2 つの部分文字列を検索する C++ コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。