与えられた文字列の文字を任意の形式に並べ替えると、文字列の配列が形成されます。たとえば、このチュートリアルでは、C の標準テンプレート ライブラリを使用して、指定された文字列のすべての順列を出力する方法について説明します
Input : s = “ADT” Output : “ADT”, “ATD”, “DAT”, “DTA”, “TAD”, “TDA” Explanation : In the given output as you can see all the string are made up of same three character present in our string and are just rearranged thus they fit in the definition of a permutation of a string now there is one more thing to note these are all the permutations possible of string s.
指定された文字列のすべての順列を出力するには 2 つの方法があります
最初に使用する方法は、回転方法を使用することです。この方法では、文字列を回転するために使用される STL の回転関数を使用し、再帰を使用して配置を出力します。
上記のメソッドの C コード
#includeusing namespace std; void permutations(string s, string ans){ if(s.size() == 0) { // when our string which needs to //be rotated becomes empty then it means //that our permutation is stored in ans cout << ans << "\n"; return ; } for(int i = 0; i < s.size(); i++){ permutations(s.substr(1), ans + s[0]); // we are adding the // first character in our ans // passing all elements from index 1 in our // rotate string for next function. rotate(s.begin(), s.begin()+1, s.end()); //rotating such that our second element becomes first } } int main(){ string s = "ADT"; // given string permutations(s, ""); return 0; }
ADT ATD DTA DAT TAD TDA
次に、 use STL のもう 1 つの関数、next_Permutation は、名前が示すように、この関数の戻り値は、文字列の次の順列が存在するかどうかです。そうでない場合は false を返します。
ご存知のとおり、この関数は次の順列をチェックするため、考えられるすべての順列を取得するには、まず文字列を辞書順に並べ替える必要があります。
上記のメソッドの C コード
#includeusing namespace std; int main(){ string s = "ADT"; // given string sort(s.begin(), s.end()); // sorting the string do{ cout << s << "\n"; // printing the permutations }while(next_permutation(s.begin(), s.end())); // till next_permutations returns false return 0; }
ADT ATD DAT DTA TAD TDA
上記のプログラムでは、文字列の並べ替えを実行します。次に、 next_permutation 関数を使用して、考えられるすべての順列を出力します。
このチュートリアルでは、C の STL を使用して、指定された文字列の考えられるすべての順列を出力しました。また、問題に対する C プログラムと、いくつかの基本的な STL 関数とその使用法についても学習しました。このチュートリアルがお役に立てば幸いです。
以上がSTL を使用して、指定された文字列の完全な置換を C++ で実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。