import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;/*** 剑指 Offer 38. 字符串的排列** 剪枝 DFS* 思想:、* 1 固定每一位置,依次搜索(DFS)* 2 剪枝:如果当前位置的字母已经重复了,直接放弃之后所有的搜索*/public class SolutionJZ38 {private List<String> res = new ArrayList<>();private char[] ch;public String[] permutation(String s) {ch = s.toCharArray();dfs(0);return res.toArray(new String[ch.length]);}private void dfs(int x) {if (x == ch.length - 1) {res.add(String.valueOf(ch));return;}HashSet<Character> set = new HashSet<>();for (int i = x; i < ch.length; i++) {if (set.contains(ch[i])) {continue;}set.add(ch[i]);swap(i, x);dfs(x+1);swap(i,x);}}private void swap(int a, int b) {char temp = ch[a];ch[a] = ch[b];ch[b] = temp;}
}

剑指 Offer 38. 字符串的排列相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 为什么推荐 Java 程序员使用 Google Guava 编程
  2. 计算机网络五层协议简介
  3. python类实例_类和实例
  4. HDU 4162 Shape Number(最小表示法)
  5. Elasticsearch 实战经验总结
  6. C++之STL之priority_queue
  7. ping32终端安全管理系统_文档安全之Ping32文档外发管控使用详解
  8. oracle数据库使用之数据查询入门
  9. apereo cas mysql_史上最详细的 Apereo CAS 5.3开发教程:二、Apereo CAS 5.3 Server环境搭建,登录名,密码从数据库中获取...
  10. QTP不识别树结构中的点击事件
  11. [bzoj1025] [SCOI2009]游戏
  12. Java实现两个文件夹之间的同步(改进版)
  13. 手机QQ空间装逼代码收集
  14. 渗透测试-地基篇-Cobal Strike-taowu梼杌详细介绍(十九)
  15. GoogleEarth崩了!!除了重装还可以这样解决......
  16. java bl层,科普一下bl锁的知识,没解锁的必看!
  17. LCD显示屏加入百叶窗特效显示BMP图片
  18. gromacs ngmx_GROMACS教程
  19. maven工程读取resource资源文件(踩坑)
  20. vps、云服务器、虚拟主机

热门文章

  1. Git第六章:1.如何创建Github远程库、如何为远程库创建别名、如何推送本地库至github远程库、如何将github远程库拉取至本地库
  2. wps带阴影的边框怎么设置_win7系统下wps阴影边框的的图文教程?
  3. Linux 修复live CD光盘
  4. 什么工具可以分析php源代码,PHP_一个可以找出源代码中所有中文的工具,一个可以找出源代码中所有中 - phpStudy...
  5. 禅道项目管理软件配置及使用教程
  6. go-pear 的安装问题
  7. Windows电脑快速打开heic文件方法
  8. C语言字符串函数strcat,strcpy详解
  9. C++类和对象成员函数,静态成员,构造函数和析构函数、初始化列表
  10. APE,FLAC文件转WAV文件