题目类型
字符串 动态规划 递归
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
code
- 善用C++全排列函数:
- next_permutation(num,num+n) 按升序全排刘
- pre_permutation(num,num+n) 按降序全排列
- 注意:next_permutation()在使用前需要对欲排列数组按升序排序,否则只能找出该序列之后的全排列数。
- 注意str为空时情况
class Solution {
public:
vector<string> Permutation(string str) {
if(str.empty())
return {};
vector<string> ans;
sort(str.begin(),str.end());
ans.push_back(str);
while(next_permutation(str.begin(), str.end())){
ans.push_back(str);
}
return ans;
}
};
运行时间:3ms
占用内存:480k