本文最后更新于:2020年6月29日 晚上
题目描述:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
其实之前已经写过全排列问题了。。。请戳传送门全排列问题算法分析与实现(递归、非递归)。这次仅仅是更改了接口,算法思想不变。
实现如下:
//使用STL中的next_permutation,判断是否存在下一个字典序列
class Solution
{
vector<string> strVec;//存储排列情况
public:
vector<string> Permutation(string str)
{
if (str.size() == 0) return strVec;//防御性动作
sort(str.begin(), str.end());//先将字符串有序化
do
{
strVec.push_back(str);//第一种情况直接添加
} while (next_permutation(str.begin(), str.end()));//判断是否存在下个字典系列
return strVec;
}
};
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!