剑指 Offer 38. 字符串的排列
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]
限制:
1 <= s 的长度 <= 8
dfs + set
class Solution {
public:
bool vis[8];
set<string> map;
void dfs(string& s, int k, string str)
{
if(k == s.length())
{
map.insert(str);
return;
}
for(int i = 0; i < s.length(); i++)
{
if(vis[i]) continue;
vis[i] = 1;
dfs(s, k + 1, str + s[i]);
vis[i] = 0;
}
}
vector<string> permutation(string s) {
vector<string> ret;
memset(vis, 0, sizeof(vis));
dfs(s, 0, "");
for(set<string>::iterator it = map.begin(); it != map.end(); it++)
{
ret.push_back(*it);
}
return ret;
}
};
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。

浙公网安备 33010602011771号