全排列的C++递归解法
图解:
输入s = "abc"
返回 res = ["abc","acb","bac","bca","cab","cba"]
class Solution {
private:
void solve(string s,int i,vector<string>& res)
{
if (i==s.length()-1)
{
res.push_back(s);
return ;
}
for (int j=i;j<s.length();++j) //i为要本次要确定的位置,可与其后交换位置
{
swap(s[j],s[i]);
solve(s,i+1,res);
}
}
public:
vector<string> permutation(string s)
{
vector<string> res;
solve(s,0,res);
return res;
}
};
递归的时间复杂度较高,但也是简洁明了的方法。
希望对你有所帮助。