(day 22 - 全排列问题 dfs+剪枝+回溯 )剑指 Offer 38. 字符串的排列
题目
题链:剑指 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. 字符串的排列相关推荐
- ++递归 字符串全排列_剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...
- LeetCode——剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 题目 输入一个字符串,打印出该字符串中字符的所有排列.你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.示例:输入:s = "abc" ...
- 剑指 Offer 38. 字符串的排列
import java.util.ArrayList; import java.util.HashSet; import java.util.List;/*** 剑指 Offer 38. 字符串的排列 ...
- 【LeetCode】剑指 Offer 38. 字符串的排列
[LeetCode]剑指 Offer 38. 字符串的排列 文章目录 [LeetCode]剑指 Offer 38. 字符串的排列 package offer;import java.util.Hash ...
- 【击败时间100%】剑指 Offer 38. 字符串的排列
立志用最少的代码做最高效的表达 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出 ...
- 【LeetCode笔记】剑指 Offer 38. 字符串的排列(Java、字符串、DFS)
文章目录 题目描述 思路 && 代码 二刷 打卡第五天- 题目描述 和这道题很相似,只是数据结构不同 思路 && 代码 DFS + 辅助访问数组 + Set 减枝 通过 ...
- list转字符串_剑指offer 38——字符串的排列
本题主要在于对回溯的理解,优化时可以结合 java 特性,以及排列的一些知识. 原题 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例 ...
- 2021-09-01剑指 Offer 38. 字符串的排列
class Solution {public:vector<string> permutation(string s) {dfs(s, 0);return res;} private:ve ...
- 剑指 Offer 38. 字符串的排列(有重复元素的排列)
思路:dfs 暴搜 class Solution { public:vector<string> permutation(string s) {vector<string> a ...
- 【算法】剑指 Offer 38. 字符串的排列 【重刷】
1.概述 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出:["abc ...
最新文章
- 如何用python创建一个下载网站-用Python写一个简单的网页下载
- boost::condition_variable相关的测试程序
- spring3.2 @Scheduled注解 定时任务
- visual studio 2015安装 无法启动程序,因为计算机丢失D3DCOMPILER_47.dll 的解决方法
- mysql dp.cal 显示汉子_计算1到N中各个数字出现的次数 --数位DP
- java redis 哨兵_突破Java面试(23-7) - Redis的哨兵架构
- python数据分析:Pandas
- 囧从流氓同事的河蟹喜酒归来......
- AiChallenger比赛记录之样本不均衡
- 山寨AR手游频出,VRAR正打造一庞大…
- RSF-Center,集群模式下-协调数据结构
- Android JetPack架构篇,一个实战项目带你学懂JetPack
- 【Vue】pc和移动端网页样式适配
- 由二叉树构造赫夫曼树
- VSCODE的Python配置
- 最安全的邮箱-Gmail
- SQL Server2000中执行一个SQL, 在lock上发现自己锁自己
- GD32450i-EVAL学习笔记 6 - ADC
- HR:您好,您应聘的软件测试工程师岗位录取Offer会在三天之内发到您的邮箱。
- mysql运行测速_定时检测网测速
热门文章
- Delphi 与 DirectX 之 DelphiX(3): 初识 TDXDraw
- VS2005 SP1 “无法使用此产品的安装源,请确认安装源存在,并且您可以访问它”的错误...
- jquery on()方法off()方法
- 3.企业应用架构模式 --- 映射到关系数据库
- 13.vim 全局替换路径
- 138. PHPExcel 操作
- 17. meta http-equiv 属性
- 19. Window focus() 方法
- 12. PHP 函数
- 计算机系统配置有哪些,查看电脑配置方法有哪些