题解 | #字符串的排列#
字符串的排列
https://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
#include <string>
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return string字符串vector
*/
vector<string> Permutation(string str) {
// write code here
vector<string>ans;
string combine;
vector<int>vis;
vis.resize(str.size());
sort(str.begin(),str.end());
backtrack(ans, combine, vis, str, 0);
return ans;
}
void backtrack(vector<string>&ans,string combine,vector<int>&vis,string str,int idx){
if(idx==str.size()){
ans.push_back(combine);
}
for(int i=0;i<str.size();++i){
if(vis[i]||(i>0&&str[i]==str[i-1]&&!vis[i-1])){
continue;
}
combine.push_back(str[i]);
vis[i]=1;
backtrack(ans, combine, vis, str, idx+1);
combine.pop_back();
vis[i]=0;
}
}
};


滴滴公司福利 1778人发布