/*
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
*/
class Solution {
public:
vector<string> Permutation(string str) {
std::vector<std::string> vecRet ;
if(str.empty()) return vecRet ;// if(str.empty())
DoIt(str, 0, vecRet) ;
std::sort(vecRet.begin(), vecRet.end()) ;// std::sort
return vecRet ;
}
void DoIt(std::string& str, int index, std::vector<std::string>& vecRet) {
if(index == str.length()) {
vecRet.push_back(str) ;// vecRet.push_back(str)
}
for(std::size_t i = index; i < str.length(); ++i) {
if(i != index && str[i] == str[index]) continue ;
char cTemp = str[i] ;
str[i] = str[index] ;
str[index] = cTemp ;// = cTemp
DoIt(str, index + 1, vecRet) ;
cTemp = str[i] ;
str[i] = str[index] ;
str[index] = cTemp ;// = cTemp
}
}
};
字符串的排列
最新推荐文章于 2023-09-20 10:40:24 发布