描述
输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。示例1
输入:"ab"返回值:
["ab","ba"]说明:
返回["ba","ab"]也是正确的
示例2
输入:"aab"返回值:
["aab","aba","baa"]
示例3
输入:"abc"返回值:
["abc","acb","bac","bca","cab","cba"]
示例4
输入:""返回值:
[""]
class Solution { public: // 深度搜索 void dfs(string &str, std::set<string> &setVec, int idx){ if(idx == str.size()){ setVec.insert(str); return ; } for(int i = idx; i < str.size(); i++){ swap(str[i], str[idx]); dfs(str, setVec, idx + 1); swap(str[i], str[idx]); } } vector<string> Permutation(string str) { std::set<string> setVec; dfs(str, setVec, 0); return std::vector<string>(setVec.begin(), setVec.end()); } };
标签:排列,idx,示例,setVec,str,字符串,返回值 From: https://www.cnblogs.com/fly-code-jia/p/18214126