目錄
#Rotate()
範例
輸出
Next_Permutation
結論
首頁 後端開發 C++ 使用STL實作給定字串的C++全排列

使用STL實作給定字串的C++全排列

Sep 01, 2023 pm 11:33 PM
字串 stl 全排列

使用STL實作給定字串的C++全排列

當給定字串的字元以任意形式重新排列時,就形成了字串的排列。例如,在本教程中,我們將討論如何使用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.
登入後複製

有兩種方法可以列印給定字串的所有排列

#Rotate()

我們要使用的第一個方法是使用旋轉方法。在此方法中,我們將使用 STL 的旋轉函數,該函數用於旋轉字串,並且我們將使用遞歸來列印排列。

範例

上述方法的C 程式碼

#include<bits/stdc++.h>
using 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
登入後複製

Next_Permutation

現在我們將使用STL的另一個函數,即next_Permutation,顧名思義,該函數的傳回值是該字串的下一個排列是否存在。如果不是,則傳回 false。

如您所知,此函數會檢查下一個排列;因此,我們首先需要按字典順序對字串進行排序,以便獲得所有可能的排列。

範例

上述方法的C 程式碼

#include<bits/stdc++.h>
using 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

怎麼重複字串_python重複字串教程 怎麼重複字串_python重複字串教程 Apr 02, 2024 pm 03:58 PM

1.先開啟pycharm,進入到pycharm首頁。 2.然後新建python腳本,右鍵--點選new--點選pythonfile。 3.輸入一段字串,代碼:s="-"。 4.接著需要把字串裡面的符號重複20次,代碼:s1=s*20。5、輸入列印輸出代碼,代碼:print(s1)。 6.最後運行腳本,在最底部會看到我們的回傳值:-就重複了20次。

如何在Go語言中截取字串 如何在Go語言中截取字串 Mar 13, 2024 am 08:33 AM

Go語言是一種強大且靈活的程式語言,它提供了豐富的字串處理功能,包括字串截取。在Go語言中,我們可以使用切片(slice)來截取字串。接下來,將詳細介紹如何在Go語言中截取字串,並附上具體的程式碼範例。一、使用切片截取字串在Go語言中,可以使用切片表達式來截取字串的一部分。切片表達式的語法如下:slice:=str[start:end]其中,s

PHP中int型別轉字串的方法詳解 PHP中int型別轉字串的方法詳解 Mar 26, 2024 am 11:45 AM

PHP中int型別轉字串的方法詳解在PHP開發中,常會遇到將int型別轉換為字串型別的需求。這種轉換可以透過多種方式實現,本文將詳細介紹幾種常用的方法,並附帶具體的程式碼範例來幫助讀者更好地理解。一、使用PHP內建函數strval()PHP提供了一個內建函數strval(),可以將不同類型的變數轉換為字串類型。當我們需要將int型別轉換為字串型別時,

如何在 C++ STL 中實作客製化的比較器? 如何在 C++ STL 中實作客製化的比較器? Jun 05, 2024 am 11:50 AM

實作自訂比較器可以透過建立一個類,重載運算子()來實現,該運算子接受兩個參數並指示比較結果。例如,StringLengthComparator類別透過比較字串長度來排序字串:建立一個類別並重載運算子(),傳回布林值指示比較結果。在容器演算法中使用自訂比較器進行排序。透過自訂比較器,我們可以根據自訂標準對資料進行排序或比較,即使需要使用自訂比較標準。

Golang中如何檢查字串是否以特定字元開頭? Golang中如何檢查字串是否以特定字元開頭? Mar 12, 2024 pm 09:42 PM

Golang中如何檢查字串是否以特定字元開頭?在使用Golang程式設計時,經常會遇到需要檢查一個字串是否以特定字元開頭的情況。針對這項需求,我們可以使用Golang中的strings套件所提供的函數來實現。接下來將詳細介紹如何使用Golang檢查字串是否以特定字元開頭,並附上具體的程式碼範例。在Golang中,我們可以使用strings套件中的HasPrefix

如何取得C++ STL容器的大小? 如何取得C++ STL容器的大小? Jun 05, 2024 pm 06:20 PM

透過使用容器的size()成員函數,可以取得容器中元素的數量。例如,vector容器的size()函數傳回元素數量,list容器的size()函數傳回元素數量,string容器的length()函數傳回字元數量,deque容器的capacity()函數傳回分配的記憶體區塊數量。

如何排序C++ STL容器? 如何排序C++ STL容器? Jun 02, 2024 pm 08:22 PM

C++中對STL容器排序的方法:使用sort()函數,原地排序容器,如std::vector。使用有序容器std::set和std::map,元素在插入時自動排序。對於自訂排序順序,可以使用自訂比較器類,例如按字母順序排序字串向量。

PHP字串操作:去除多餘逗號,保留唯一逗號實作技巧 PHP字串操作:去除多餘逗號,保留唯一逗號實作技巧 Mar 28, 2024 pm 03:02 PM

PHP字串操作:去除多餘逗號,保留唯一逗號實作技巧在PHP開發中,字串處理是一個非常常見的需求。有時候我們需要對字串進行處理,去除多餘的逗號,保留唯一的逗號。在這篇文章中,我將介紹一種實作技巧,並提供具體的程式碼範例。首先,我們來看一個常見的需求:假設我們有一個包含多個逗號的字串,我們需要去除多餘的逗號,只保留唯一的逗號。例如,將"apple,ba

See all articles