27.文字列の配置
896 ワード
文字列を入力し、その文字列のすべての配列を辞書順に印刷します.例えば文字列abcを入力すると、文字a,b,cで並べられるすべての文字列abc,acb,bac,bca,cab,cbaが印刷される.
class Solution {
public:
vector Permutation(string str) {
vector res;
if (str.empty())
return res;
f(res, str, 0);
sort(res.begin(), res.end());
return res;
}
void f(vector& res,string& str, int begin){
if (begin >= str.size()) return;
if (begin == str.size() - 1){
res.push_back(str);
return;
}
for (int i = begin; i < str.size(); ++i) {
if (i != begin && str[i] == str[begin])
continue;
swap(str[i], str[begin]);
f(res, str, begin+1);
swap(str[i], str[begin]);
}
}
};