结合代码注释的讲解,来分析解决这个问题,或许是一种好办法
一、题目信息
题目描述:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串
abc
,则打印出由字符a
,b
,c
所能排列出来的所有字符串abc
,acb
,bac
,bca
,cab
和cba
。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
题目来源:字符串的排列–nowcoder
二、题目解析
#if 0
class Solution {
public:
vector<string> Permutation(string str) {
/**
* 刚刚我们尝试了 <algorithm> 库里的 next_permutation 函数
* TODO 自己模拟实现一个 next_permutation 函数
*/
}
};
#endif
#if 1
class Solution {
public:
vector<string> Permutation(string str) {
/**
* 听说 c++ >algorithm> 库里有一个 next_permutation 函数
* 要不我们试试,哈哈哈
*/
std::vector<std::string> ret;
// 参数检验 如果 str 为空 就返回一个空的 vector
if (str.empty())
{
return ret;
}
// std::string temp;
std::sort(str.begin(), str.end());
do
{
ret.push_back(str);
} while ( std::next_permutation(str.begin(), str.end()));
return ret;
}
};
#endif
有问题欢迎一起探讨哦,评论区留言,我会及时回复的,一起学习,一起进步,加油 ?