题目

题链:剑指 Offer 38. 字符串的排列

题解

大佬详细题解:剑指 Offer 38. 字符串的排列(回溯法,清晰图解)

这个题解可以用来做全排列的模版

class Solution {// 存放结果private List<String> res;// 字符串装化为字符数组进行全排列private char[] cs;public String[] permutation(String s) {if (s.length() == 1){return new String[]{s};}cs = s.toCharArray();res = new ArrayList<>();// 从第一个字符开始即索引为0开始dfs(0);return res.toArray(new String[res.size()]);}void dfs(int x){if (x == cs.length-1){res.add(String.valueOf(cs));return;}// 用于检查当前位置字符有没有重复字符、有重复的话就表示是重复排序,进行剪枝HashSet<Character> set = new HashSet<>();for (int i = x; i < cs.length; i++) {if (set.contains(cs[i])){continue;}set.add(cs[i]);// 固定位置swap(x,i);// 开始定位下一个位置的字符dfs(x+1);// 回溯swap(x,i);}}void swap(int a,int b){char temp = cs[a];cs[a] = cs[b];cs[b] = temp;}
}

(day 22 - 全排列问题 dfs+剪枝+回溯 )剑指 Offer 38. 字符串的排列相关推荐

  1. ++递归 字符串全排列_剑指 Offer 38. 字符串的排列

    剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...

  2. LeetCode——剑指 Offer 38. 字符串的排列

    剑指 Offer 38. 字符串的排列 题目 输入一个字符串,打印出该字符串中字符的所有排列.你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.示例:输入:s = "abc" ...

  3. 剑指 Offer 38. 字符串的排列

    import java.util.ArrayList; import java.util.HashSet; import java.util.List;/*** 剑指 Offer 38. 字符串的排列 ...

  4. 【LeetCode】剑指 Offer 38. 字符串的排列

    [LeetCode]剑指 Offer 38. 字符串的排列 文章目录 [LeetCode]剑指 Offer 38. 字符串的排列 package offer;import java.util.Hash ...

  5. 【击败时间100%】剑指 Offer 38. 字符串的排列

    立志用最少的代码做最高效的表达 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出 ...

  6. 【LeetCode笔记】剑指 Offer 38. 字符串的排列(Java、字符串、DFS)

    文章目录 题目描述 思路 && 代码 二刷 打卡第五天- 题目描述 和这道题很相似,只是数据结构不同 思路 && 代码 DFS + 辅助访问数组 + Set 减枝 通过 ...

  7. list转字符串_剑指offer 38——字符串的排列

    本题主要在于对回溯的理解,优化时可以结合 java 特性,以及排列的一些知识. 原题 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例 ...

  8. 2021-09-01剑指 Offer 38. 字符串的排列

    class Solution {public:vector<string> permutation(string s) {dfs(s, 0);return res;} private:ve ...

  9. 剑指 Offer 38. 字符串的排列(有重复元素的排列)

    思路:dfs 暴搜 class Solution { public:vector<string> permutation(string s) {vector<string> a ...

  10. 【算法】剑指 Offer 38. 字符串的排列 【重刷】

    1.概述 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出:["abc ...

最新文章

  1. 如何用python创建一个下载网站-用Python写一个简单的网页下载
  2. boost::condition_variable相关的测试程序
  3. spring3.2 @Scheduled注解 定时任务
  4. visual studio 2015安装 无法启动程序,因为计算机丢失D3DCOMPILER_47.dll 的解决方法
  5. mysql dp.cal 显示汉子_计算1到N中各个数字出现的次数 --数位DP
  6. java redis 哨兵_突破Java面试(23-7) - Redis的哨兵架构
  7. python数据分析:Pandas
  8. 囧从流氓同事的河蟹喜酒归来......
  9. AiChallenger比赛记录之样本不均衡
  10. 山寨AR手游频出,VRAR正打造一庞大…
  11. RSF-Center,集群模式下-协调数据结构
  12. Android JetPack架构篇,一个实战项目带你学懂JetPack
  13. 【Vue】pc和移动端网页样式适配
  14. 由二叉树构造赫夫曼树
  15. VSCODE的Python配置
  16. 最安全的邮箱-Gmail
  17. SQL Server2000中执行一个SQL, 在lock上发现自己锁自己
  18. GD32450i-EVAL学习笔记 6 - ADC
  19. HR:您好,您应聘的软件测试工程师岗位录取Offer会在三天之内发到您的邮箱。
  20. mysql运行测速_定时检测网测速

热门文章

  1. Delphi 与 DirectX 之 DelphiX(3): 初识 TDXDraw
  2. VS2005 SP1 “无法使用此产品的安装源,请确认安装源存在,并且您可以访问它”的错误...
  3. jquery on()方法off()方法
  4. 3.企业应用架构模式 --- 映射到关系数据库
  5. 13.vim 全局替换路径
  6. 138. PHPExcel 操作
  7. 17. meta http-equiv 属性
  8. 19. Window focus() 方法
  9. 12. PHP 函数
  10. 计算机系统配置有哪些,查看电脑配置方法有哪些