剑指 Offer 38. 字符串的排列
Posted Billy Miracle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer 38. 字符串的排列相关的知识,希望对你有一定的参考价值。
菜鸡思考:
全排列问题,可以用DFS,但这道题怎么DFS呢?我们可以建立一个数组,存放每个字符出现的次数。
菜鸡代码:
class Solution
public:
vector<string> permutation(string s)
vector<int> dict(26, 0);
for (char c: s)
dict[c - 'a'] += 1;
string path;
vector<string> ans;
dfs(ans, path, dict, s.length());
return ans;
void dfs(vector<string>& ans, string& path, vector<int>& dict, int len)
if (len == path.length())
ans.push_back(path);
return;
for (int i = 0; i < 26; ++i)
if (dict[i])
dict[i]--;
path.push_back('a' + i);
dfs(ans, path, dict, len);
path.pop_back();
dict[i]++;
;
开发者涨薪指南
48位大咖的思考法则、工作方式、逻辑体系
以上是关于剑指 Offer 38. 字符串的排列的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 字符串的排列全排列问题(剑指offer38)