class Solution {
public:
vector<string> Permutation(string str) {
sort(str.begin(), str.end());
string tem = str;
vector<string> ans;
while (tem != "") {
ans.push_back(tem);
getnext(tem);
}
return ans;
}
void getnext(string &str) {
int len = str.size();
int i;
int judge = 0;
int cur = len - 2;
while (cur >= 0) {
for (i = len - 1; i > cur; i--) {
if (str[i] > str[cur]) {
judge = 1;
break;
}
}
if (judge) {
swap(str[i], str[cur]);
reverse(str.begin() + cur + 1, str.end());
break;
}
cur--;
}
if (!judge)
str = "";
}
};
运用了求一个排列的下一个排列算法,可以用递归,更加简单。